zoukankan      html  css  js  c++  java
  • Mac运维安装软件

    Maccrt软件

    sudo spctl --master-disable

    打开软件,复制到app,按照sn.txt输入即可

    sudo spctl --master-enable

    crt快捷键
    crtl + l 清屏
    crtl + u 清除当前行
    crtl + w 删除当前光标到行首
    crtl + k 删除当前光标到行尾
    crtl + e 移动到当前行尾
    crtl + a 移动到当前行首

    鼠标复制:
    options -> global options -> Terminal 钩上Copy on select,并钩上paste on middle button
    这样在secrecrt中用鼠标选中一段字符,就可以直接复制到剪切板,按鼠标中间的齿轮完成复制粘贴

    Options->Session Options->Terminal->Anti-idle->勾选Send protocol NO-OP 超时

    Macftp软件

    打开软件即用

    压缩与解压

    wget http://www.rarlab.com/rar/rarlinux-3.8.0.tar.gz
    rar a jpg.rar *.jpg //rar格式的压缩
    unrar e *.rar       //解压 
    
    tar –cf jpg.tar *.jpg //将目录里所有jpg文件打包成jpg.tar
    *.tar 用 tar –xvf 解压 
    
    tar –czf jpg.tar.gz *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz 
    *.tar.gz和*.tgz 用 tar –xzf 解压 
    
    zip jpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux
    *.zip 用 unzip 解压

    linxusvn服务

    CentOS7下安装SVN服务

    1. yum命令即可方便的完成安装
    # sudo yum install subversion

    测试安装是否成功:
    # svnserve --version

    更改svn的默认配置(更改默认的指向目录和默认端口)
    # sudo vim /etc/sysconfig/svnserve  默认/var/run
    编辑示例:
    OPTIONS="-r /data/svn --listen-port 3661"

    2. 建立版本库根目录
    # sudo mkdir -p /data/svn

    创建版本库:
    # sudo svnadmin create /data/svn/poppy

    如果删除版本库:
    # sudo rm -rf /data/svn/poppy

    3. 配置svn配置文件
    # sudo vim /data/svn/db/conf/svnserve.conf
    编辑示例:
    [general]
    anon-access = none      #控制非鉴权用户访问版本库的权限
    auth-access = write      #控制鉴权用户访问版本库的权限
    password-db = passwd     #指定用户名口令文件名
    authz-db = authz      #指定权限配置文件名
    realm =  /data/svn/poppy        #指定版本库的认证域,即在登录时提示的认证域名称

    4. 编辑svn用户配置文件
    # sudo vim /data/svn/db/conf/passwd
    编辑示例:
    [users]

    poppy = poppy123   用户密码

    joker = joker123

    5. 编辑svn权限控制配置文件
    # sudo vim /data/svn/db/conf/authz
    编辑示例:

    [groups]
    admin = admin        #admin为用户组,等号之后的admin为用户

    dahei = joker

    [/]            #表示根目录(/data/svn/poppy),poppy: svn仓库名
    @admin = rw         #表示admin组对根目录有读写权限,r为读,w为写

    [/dahei]         #表示dahei目录(/data/svn/poppy/dahei)
    @dahei = rw          #表示pro1组对pro1目录有读写权限

    6. 启动,查看和停止SVN服务
    启动SVN服务:
    # sudo systemctl start vnserve.service   监听默认路径

    # svnserve -d -r /data/svn/poppy,这是手动指定监听的目录,但是你一定要注意,如果-r后面是仓库路径,在checkout的时候不需要加版本库名称的也就是,svn co svn://ip/,这样的话就会把存在于poppy下的目录和文件全部fllow下来,但-r后面加的是版本库前一级目录的话,在checkout的时候就需要加仓库名称了,就是svn co svn:/ip/poppy

    如何在poppy下建立可以共给其他开发者co的目录?

    svn mkdir 1 / 2 /3 

    svn commit -m ' ' -- svn co svn://ip/1-2-3 

    其他开发者就可以通过fllow文件下来

    svn co svn://ip/poppy/dahei --username=joker --password=joker123

               
    查看SVN服务:
    # sudo ps aux|grep svnserve      #默认端口为:3690
    # sudo systemctl status svnserve.service


    8. 设置开机启动
    在centos7, 设置开机启动:
    # sudo systemctl enable svnserve.service      #注意:根目录必须是/var/svn 这样才能设置成功!!
    #设置开机启动后就可以按下面的方式开启或停止服务了
    # sudo systemctl start svnserve.service
    # sudo systemctl stop svnserve.service

    提交后自动更新到目录 

    然后配置SVN钩子自动更新项目文件到web目录
    在SVN服务器端
    SVN安装路径:/usr/bin/svn
    SVN登录账号:yourname
    SVN登录密码:yourpass
    Web站点根目录:/data/www/maidong
    实现目的:
    当svn项目中有任何修改更新时,系统会自动实时从svn中检出文件并同步到Web站点根目录
    具体操作:
    一、我们进入web站点根目录,checkout出我们的jd项目,用于后面自动提交
    cd /data/www
    svn co svn://remoteip/poppy --username=poppy --password=poppy123 /home/www/maidong
    这样就是将poppy仓库目录下的分枝目录,文件等fllow下来,无论你是从poppy提交文件,还是从分枝目录提交都会变动
    一、使用SVN中post-commit实现自动实时从svn中检出文件并同步到Web站点根目录
    cd /home/svn/hooks
    cp post-commit.tmpl post-commit
    vim post-commit #编辑,添加以下代码
    root@mon01:/data/svn/svnrepos/hooks# cat post-commit.bak 
    #!/bin/bash
    # --by joker in 2018-7-24--
    
    REPOS="$1"                  # 仓库的路径   
    REV="$2"                    # 新提交的版本号 
    
    # 字符集,命令  
    export LANG=en_US.utf8
    SVN_PATH=/usr/bin/svn
    SVNLOOK=/usr/bin/svnlook
    
    # 钩子脚本的日志
    LOGFILE=/var/log/svn-update.log
    
    # 获取变动目录 
    TIME=$(date "+%Y-%m-%d %H:%M:%S")   
    AUTHOR=$($SVNLOOK author -r $REV $REPOS)  #提交作者
    CHANGEDDIRS=$($SVNLOOK dirs-changed $REPOS) #修改的目录集合   
    
    # SVN客户端配置,需要自行修改   
    CLIENTSVNROOT=/data/www/maidong    #WEB服务器的代码根目录,这真的就是目录而已   
    SVNUSER="poppy" 
    SVNPASSWD="poppy123" 
    
    # update
    echo "[$TIME]--[$AUTHOR] svn commit file: $1  $2" >> $LOGFILE
    for change_dir in $CHANGEDDIRS
        do
            echo "[$TIME]--[$AUTHOR] svn commit file: $1  $2 | $change_dir" >> /tmp/svn.log
            $SVN_PATH update --username $SVNUSER --password $SVNPASSWD --no-auth-cache -N $CLIENTSVNROOT/$change_dir >> $LOGFILE 2>&1
    done
    
    # 远程同步
    rsync -e 'ssh -l www' -avl --delete --exclude eat/uploads/ /data/www/* web02:/home/work/www/
    chmod +x /home/svn/hooks/post-commit #添加脚本执行权限
    --no-auth-cache #不保存账户认证信息
    二、客户端测试
    使用svn客户端在jd目录或是下面的子目录添加一个文件之后,进行svn添加并提交操作进入服务器/home/www/jd目录下可以看到提交到svn的文件已自动更新到web目录下

    Mac终端svn命令

    1. 将文件checkout到本地目录

    svn checkout path(path是服务器上的目录)  
    例如:svn checkout svn://192.168.1.1/demo
    简写:svn co  

    2. 往版本库中添加新的文件

    svn add file  
    例如:svn add test.php(添加test.php)  
    svn add *.php(添加当前目录下所有的php文件) 

    3. 将改动的文件提交到版本库

    svn commit -m “LogMessage“ [-N] [--no-unlock] PATH(如果选择了保持锁,就使用–no-unlock开关)  
    例如:svn commit -m “改动提交“ test.php  
    简写:svn ci  

    4. 加锁/解锁

    svn lock -m “LockMessage“ [--force] PATH  
    例如:svn lock -m “加锁“ test.php  
    例如:svn unlock PATH 

    5. 更新到某个版本

    svn update -r m path  
    例如:  
    svn update 如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。  
    svn update -r 200 test.php(将版本库中的文件test.php还原到版本200)  
    冲突解决 svn update test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit) 简写:svn up

    6. 查看文件或者目录状态

    1 svn status path(目录下的文件和子目录的状态,正常状态不显示)  
    【?:不在svn的控制中;M:内容被修改;C:发生冲突;A:预定加入到版本库;K:被锁定】  
    2 svn status -v path(显示文件和子目录状态)  

    7. 删除文件

    svn delete path -m “delete test fle“   
    svn delete test.php 然后再 svn ci -m ‘delete test file‘
    简写:svn (del, remove, rm)  

    8. 查看日志

    svn log path  
    例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化  

    9. 查看文件详细信息

    svn info path  
    例如:svn info test.php  

    10. 比较差异

    svn diff path(将修改的文件与基础版本比较)  
    例如:svn diff test.php  
    svn diff -r m:n path( 对版本m和版本n比较差异)  
    例如:svn diff -r 200:201 test.php  
    简写:svn di  

    11. 将2个版本之间的差异合并到当前文件

    svn merge -r m:n path  
    例如:svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下) 

    12. svn帮助

    svn help  
    svn help ci  

    13. 版本库下的文件和目录列表

    svn list path  
    显示path目录下的所有属于版本库的文件和目录  
    简写:svn ls  

    14. 创建纳入版本控制下的新目录

    svn mkdir: 创建纳入版本控制下的新目录。  
    创建后需要提交 commit

    15. 恢复本地修改

    svn revert: 恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。revert:  
    用法: revert PATH…  ,针对未提交的修改
    注意: 本命令不会存取网络,并且会解除冲突的状况。但是它不会恢复被删除的目录  
    svn revert --depth=infinity,恢复目录

    16. 代码库url变更

    svn switch (sw): 更新工作副本至不同的URL。  
    用法: 1、switch URL [PATH]  
    2、switch –relocate FROM TO [PATH...]  
       
    1、更新你的工作副本,映射到一个新的URL,其行为跟“svn update”很像,也会将  
    服务器上文件与本地文件合并。这是将工作副本对应到同一仓库中某个分支或者标记的  
    方法。  
    2、改写工作副本的URL元数据,以反映单纯的URL上的改变。当仓库的根URL变动  
    (比如方案名或是主机名称变动),但是工作副本仍旧对映到同一仓库的同一目录时使用  

    17. 解决冲突

    冲突的产生,服务器有较高版本,而本地没有update即提交,产生冲突文件
    svn resolved: 移除工作副本的目录或文件的“冲突”状态。 用法: svn resolved PATH…
    vi 冲突文件
    commit 提交,会在服务器增加一个版本 注意: 本命令不会依语法来解决冲突或是移除冲突标记;它只是移除冲突的相关文件,然后让 PATH 可以再次提交。

    centos安装php

    在自己玩阿里云上有个yum源站

    yum -y install php56w.x86_64 php56w-mbstring.x86_64 php56w-xml.x86_64 php56w-pdo.x86_64 php56w-mssql.x86_64 php56w-fpm.x86_64 php56w-pear.noarch php56w-pecl-redis.x86_64 php56w-common.x86_64 php56w-bcmath.x86_64 php56w-mysql.x86_64 php56w-process.x86_64 php56w-pecl-igbinary.x86_64 php56w-opcache.x86_64 

     

    [root@jokerpro ~]# cat /etc/yum.repos.d/webtatic.repo
    [webtatic]
    name=Webtatic Repository EL6 - $basearch
    #baseurl=https://repo.webtatic.com/yum/el6/$basearch/
    mirrorlist=https://mirror.webtatic.com/yum/el7/$basearch/mirrorlist
    failovermethod=priority
    enabled=1
    gpgcheck=0

    yum list |grep php

    rpm -qa ql 

    linxu性能问题排查

    1. 针对cpu跑满,top第一行,第三行

    按P是排序cpu

    按M是排序内存

    按小k,然后进程号

    针对带宽跑满

    yum install iftop -y     iftop -i eth1 -P  流量占用情况

    112是服务器的本机ip,port,后面是客户机的ip,port

    netstat -ntlp|grep 53139

    yum install nethogs -y

    kill + pid即可

    2. 访问网站慢

    ping:检测 IP 或域名的连通性。

    dig/nslookup:查看 DNS 解析情况。

    traceroute:显示从访问者到网站的路由连接状态。如果有节点无法连接,只需针对该故障点进行修复便可快速恢复网络。

    traceroute命令用于追踪数据包在网络上的传输时的全部路径,它默认发送的数据包大小是40字节。
    
    通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。
    
    traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其ip地址。
    
    语法
    traceroute(选项)(参数)
    选项
    -d:使用Socket层级的排错功能;
    -f<存活数值>:设置第一个检测数据包的存活数值TTL的大小;
    -F:设置勿离断位;
    -g<网关>:设置来源路由网关,最多可设置8个;
    -i<网络界面>:使用指定的网络界面送出数据包;
    -I:使用ICMP回应取代UDP资料信息;
    -m<存活数值>:设置检测数据包的最大存活数值TTL的大小;
    -n:直接使用IP地址而非主机名称;
    -p<通信端口>:设置UDP传输协议的通信端口;
    -r:忽略普通的Routing Table,直接将数据包送到远端主机上。
    -s<来源地址>:设置本地主机送出数据包的IP地址;
    -t<服务类型>:设置检测数据包的TOS数值;
    -v:详细显示指令的执行过程;
    -w<超时秒数>:设置等待远端主机回报的时间;
    -x:开启或关闭数据包的正确性检验。
    参数
    主机:指定目的主机IP地址或主机名。
    
    实例
    traceroute www.58.com
    traceroute to www.58.com (211.151.111.30), 30 hops max, 40 byte packets
     1  unknown (192.168.2.1)  3.453 ms  3.801 ms  3.937 ms
     2  221.6.45.33 (221.6.45.33)  7.768 ms  7.816 ms  7.840 ms
     3  221.6.0.233 (221.6.0.233)  13.784 ms  13.827 ms 221.6.9.81 (221.6.9.81)  9.758 ms
     4  221.6.2.169 (221.6.2.169)  11.777 ms 122.96.66.13 (122.96.66.13)  34.952 ms 221.6.2.53 (221.6.2.53)  41.372 ms
     5  219.158.96.149 (219.158.96.149)  39.167 ms  39.210 ms  39.238 ms
     6  123.126.0.194 (123.126.0.194)  37.270 ms 123.126.0.66 (123.126.0.66)  37.163 ms  37.441 ms
     7  124.65.57.26 (124.65.57.26)  42.787 ms  42.799 ms  42.809 ms
     8  61.148.146.210 (61.148.146.210)  30.176 ms 61.148.154.98 (61.148.154.98)  32.613 ms  32.675 ms
     9  202.106.42.102 (202.106.42.102)  44.563 ms  44.600 ms  44.627 ms
    10  210.77.139.150 (210.77.139.150)  53.302 ms  53.233 ms  53.032 ms
    11  211.151.104.6 (211.151.104.6)  39.585 ms  39.502 ms  39.598 ms
    12  211.151.111.30 (211.151.111.30)  35.161 ms  35.938 ms  36.005 ms
    记录按序列号从1开始,每个纪录就是一跳 ,每跳表示一个网关,我们看到每行有三个时间,单位是ms,其实就是-q的默认参数。探测数据包向每个网关发送三个数据包后,网关响应后返回的时间;如果用traceroute -q 4 www.58.com,表示向每个网关发送4个数据包。
    
    有时我们traceroute一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。
    
    有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现问题时,不能解析主机名、域名时,也会 有延时长的现象;您可以加-n参数来避免DNS解析,以IP格式输出数据。
    
    如果在局域网中的不同网段之间,我们可以通过traceroute 来排查问题所在,是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时,我们用到traceroute 追踪数据包所经过的网关,提交IDC服务商,也有助于解决问题;但目前看来在国内解决这样的问题是比较困难的,就是我们发现问题所在,IDC服务商也不可能帮助我们解决。
    traceroute命令

    3. 根据进程查找文件,或是查看端口开启情况

    lsof -p pid  / lsof -i :80

    [root@Poppy ~]# lsof -p 10530
    COMMAND     PID USER   FD   TYPE DEVICE  SIZE/OFF    NODE NAME
    mysqld_sa 10530 root  cwd    DIR  253,1      4096 1710870 /application/mysql-5.5.49
    mysqld_sa 10530 root  rtd    DIR  253,1      4096       2 /
    mysqld_sa 10530 root  txt    REG  253,1    960472  657640 /usr/bin/bash
    mysqld_sa 10530 root  mem    REG  253,1 106070960  663472 /usr/lib/locale/locale-archive
    mysqld_sa 10530 root  mem    REG  253,1   2118128  657569 /usr/lib64/libc-2.17.so
    mysqld_sa 10530 root  mem    REG  253,1     19776  657575 /usr/lib64/libdl-2.17.so
    mysqld_sa 10530 root  DEL    REG  253,1            657639 /usr/lib64/libtinfo.so.5.9;5b1f5ac7
    mysqld_sa 10530 root  mem    REG  253,1    159640  656965 /usr/lib64/ld-2.17.so
    mysqld_sa 10530 root  mem    REG  253,1     26254  787498 /usr/lib64/gconv/gconv-modules.cache
    mysqld_sa 10530 root    0r   CHR    1,3       0t0    4788 /dev/null
    mysqld_sa 10530 root    1w   CHR    1,3       0t0    4788 /dev/null
    mysqld_sa 10530 root    2w   CHR    1,3       0t0    4788 /dev/null
    mysqld_sa 10530 root  255r   REG  253,1     24805 1704037 /application/mysql-5.5.49/bin/mysqld_safe

    4. tcpdump

    [root@Poppy ~]# tcpdump -n icmp -i eth0
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
    13:12:11.569176 IP 访问者ip > 本机ip: ICMP echo request, id 24657, seq 0, length 64
    13:12:11.569208 IP 本机ip > 访问者ip: ICMP echo reply, id 24657, seq 0, length 64

     

    redis

    yum -y install redis 405

    systemctl start redis.service

    redis-cli

    redis-cli -h host -p port -a password   远程链接

    SET runoobkey redis

    DEL runoobkey

    目前云数据库 Redis 版需要通过 ECS 进行内网连接访问。如果您本地需要通过公网访问云数据库 Redis,可以在 ECS Linux 云服务器中安装 rinetd 进行转发实现。

    1. 在云服务器 ECS Linux 中安装 rinetd。

    wget http://www.boutell.com/rinetd/http/rinetd.tar.gz&&tar -xvf rinetd.tar.gz&&cd rinetd
                            sed -i 's/65536/65535/g' rinetd.c (修改端口范围)
                            mkdir /usr/man&&make&&make install

    2. 打开配置文件 rinetd.conf。

     vi /etc/rinetd.conf

    3. 在配置文件中输入如下内容:

     0.0.0.0 6379 Redis 的链接地址 6379
                            logfile /var/log/rinetd.log

    说明 您可以使用 cat /etc/rinetd.conf命令来检验配置文件是否修改正确。

    4. 执行如下命令启动 rinetd。

     rinetd
    • 您可以通过 echo rinetd >>/etc/rc.local 将 rinetd 设置为自启动。

    • 若遇到绑定报错,可以执行 pkill rinetd 结束进程,再执行 rinetd启动进程 rinetd。

    • rinetd 正常启动后, 执行netstat -anp | grep 6379 确认服务是否正常运行。

    5. 在本地进行验证测试。

    1. 您可以在本地通过 redis-cli 连接 ECS Linux 服务器后进行登录验证,比如安装了 rinetd 的服务器的 IP 是 1.1.1.1,即redis-cli -h 1.1.1.1 -a Redis的实例ID:Redis密码。或者通过 telent 连接 ECS Linux 服务器后进行操作验证。假设 ECS Linux 服务器的 IP 是 1.1.1.1,即 telnet 1.1.1.1 6379
    2. 连接上 ECS Linux 服务器后,输入连接 Redis 的密码:auth Redis的连接密码
    3. 进行数据写入及查询验证。

    通过上述步骤即可实现:您本地的 PC 或服务器通过公网连接 ECS Linux 6379 端口,对云数据库 Redis 进行访问。

    vim 

    /word

    向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! (常用)

    ?word
    向光标之上寻找一个字符串名称为 word 的字符串。

    使用 /word 配合 n 及 N 是非常有帮助的!可以让你重复的找到一些你搜寻的关键词!
    :n1,n2s/word1/word2/g n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 !举例来说,在 100 到 200 行之间搜寻 vbird 并取代为 VBIRD 则:
    『:100,200s/vbird/VBIRD/g』。(常用)
    :1,$s/word1/word2/g 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !(常用)


    d$ 删除游标所在处,到该行的最后一个字符
    d0 那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符
    home/shift+6 行首
    end/shift+4 行尾 

  • 相关阅读:
    gulp管理静态资源缓存
    你懂AI吗(1)
    Vue.js之render函数基础
    笑看女程序员征婚SQL,半夜巡逻民警突然对我大喊int类型占几个字节
    高吞吐量的分布式发布订阅消息系统Kafka之Producer源码分析
    Java并没有衰落.大家对它的认识才刚刚开始 Java8全新出发
    那些面试官必问的JAVA多线程和并发面试题及回答
    在阿里一位新员工是怎么一步步培养起来的
    Lambda表达式用法大比较: Scala和Java 8
    国内外程序员编程网站、博客,对学编程的你提供一点小小的帮助
  • 原文地址:https://www.cnblogs.com/jokerbj/p/9034188.html
Copyright © 2011-2022 走看看