zoukankan      html  css  js  c++  java
  • centos 踩坑集锦

    定时任务

    top 命令添加定时任务无效

    我通过以下命令获取总进程数与僵尸进程数

    vim  procs.sh
    procs_total=`/bin/top  -n 1|grep Tasks|sed 's/,/
    /g'|grep total|awk '{ print $(NF-1) }'`
    procs_zombie=`/bin/top  -n 1|grep Tasks|sed 's/,/
    /g'|grep zombie|awk '{ print $(NF-1) }'`
    echo $procs_total $procs_zombie > key.prom
    

    手动执行没问题,加在crontab 定时任务中,就无效
    因为:没有加-b参数,应该写成

    /bin/top -b -n 1
    

    -b 以批处理模式启动top,这对于将输出从top发送到其他程序或文件很有用。在此模式下,Top将不接受输入并在迭代之前运行使用`-n'命令行选项设置的限制或直到被杀死。

    定时任务命令中不识别变量

    定时任务这样添加无效:

    * * * * *  echo $(date +%Y%m%d) >> /var/log/testlog
    

    不识别$()与 ,可尝试将命令写在文件file中,再在定时中source环境变量 bash file

    通过/etc/crontab 添加定时

    定时任务除了crontab -e的方式外,还可以通过直接编辑/etc/crontab添加
    但是需要添加上执行用户,否则不生效。eg:

    vim /etc/crontab
    * * * * *  root  echo hello >> /tmp/hello
    

    /etc/resolv.conf 总是重新恢复

    此文件声明了此server用的DNS服务器,但在我修改之后它总是重新恢复,因为系统总是主动使用DHCP server传来的数据进行系统文件的修复。
    解决方法:
    在网卡配置添加,再重启网络服务
    echo PEERDNS=no >> /etc/sysconfig/network-scripts/ifcfg-eno1677773
    systemctl restart network

    python

    传文件

    当你登上服务器 sudo su,但没有密码,用不了scp,lrzsz又麻烦,怎么传文件?用python
    例如:我要传 192.168.2.1 /home/tom/log 文件到192.168.2.2

    在192.168.2.1 :
    cd  /home/tom/
    python -m SimpleHTTPServer 8099   #此端口随便开
    
    在192.168.2.2 :
    wget 10.2.14.75:8099/log
    

    python2.7安装pip

    python -V
    wget https://pypi.python.org/packages/11/b6/abcb525026a4be042b486df43905d6893fb04f05aac21c32c638e939e447/pip-9.0.1.tar.gz#md5=35f01da33009719497f01a4ba69d
    tar -xf pip-9.0.1.tar.gz
    cd pip-9.0.1
    python setup.py install
    pip
    

    rpm包网站

    在这里总结两个rpm包的网站,方便日后寻找
    http://rpm.pbone.net
    http://rpmfind.net

    axel并发下载

    今天一个包下了一整天,没下下来,使用下载工具轻松解决

    wget ftp://ftp.pbone.net/mirror/pkgs.repoforge.org/axel/axel-2.4-1.el6.rf.x86_64.rpm
    rpm -ivh axel-2.4-1.el6.rf.x86_64.rpm
    axel -n 10 https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana-4.4.3-1.x86_64.rpm  #10个并发下载grafana包
    

    awk

    awk '{print $(NF-1)}' file 打印空格分隔的倒数第二行

    vim

    替换行首的空格
    :%s/^ *// %为全篇选中
    替换行末的空格
    :%s/ *$//
    将换行符替换为空格
    :%s/ / /
    将空格替换为换行
    :% s/ / /g

    vi/vim 外部代码粘贴行首缩进问题

    在vi/vim 外部代码粘贴经常出现每行行首缩进,格式改变问题

    在拷贝前输入: set paste    #只是单纯粘贴,行首不会自动缩进
    拷贝完成后输入: set nopaste    #关闭paste
    

    sed

    去除行首空格与tab
    sed -i 's/[1]*//g' file
    sed中如果引用了变量,需要用双引号变量才会生效
    sed -n "/$domain/,/server_name/p" file
    打印指定字符下的行
    eg:
    aaa
    1
    1
    aaa
    2
    2
    2
    sed -n '/aaa/ {n;p}' file

    rsync

    rsync同步过来的日志是655,普通用户不能读

    再rsync服务端配置文件 /etc/rsync.conf 中加上如下配置:
    incoming chmod = Du=rwx,Dog=rx,Fu=rw,Fgo=r
    D --- 目录
    F --- 文件
    u --- user
    o --- other
    g --- group

    rsync --delete删除问题

    [hosta]# cat /tmp
    aaa 
    [hostb]# cat /tmp/test
    test1
    [hosta]的rsync配置
    [tmpa]
    path=/tmp
    

    同步b的/tmp/test到a的命令:

    rsync -avz /tmp/test rsync://root@hosta:port/tmpa/ --delete  
    

    面临问题:
    仅同步了test目录到hosta,未删除hosta下的多余文件 aaa

    原因:以上rsync命令相当于,所以只会删除hosta下多余的文件。

    rsync -avz /tmp/test/ rsync://root@hosta:port/tmpa/test/ --delete
    

    yum

    当我安装docker的时候,报错:

    yum -y install docker
    http://centos.mirrors.ucloud.cn/centos/7/os/x86_64/repodata/repomd.xml: [Errno 14] curl#7 - "Failed connect to centos.mirrors.ucloud.cn:80; Operation now in progress"
    

    不能连接centos.mirrors.ucloud.cn,换个yum源试试
    cd /etc/yum.repos.d/
    grep -r centos.mirrors.ucloud.cn
    CentOS-Base.repo......
    epel.repo......
    mv CentOS-Base.repo CentOS-Base.repo.bak
    mv epel.repo epel.repo.bak
    wget http://mirrors.aliyun.com/repo/Centos-7.repo
    wget http://mirrors.aliyun.com/repo/epel-7.repo
    yum -y install docker

    docker官方镜像版本查询

    网址:https://hub.docker.com/r/library/

    mkdir 高级用法

    mkdir /data/ceph/{etc,lib,logs} -p
    

    常见报错

    shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory

    在某个被删除的目录下执行某些命令就会有此报错,cd 到其他存在的目录再执行即可。

    umount报错

    [root@node3 osd3]# umount /osd3/
    umount: /osd3: target is busy.
            (In some cases useful info about processes that use
             the device is found by lsof(8) or fuser(1))
    

    常常是因为这个目录被其他程序占用

    [root@node3 osd3]# yum install psmisc 
    [root@node3 osd3]# fuser -mv /osd3/
                         USER        PID ACCESS COMMAND
    /osd3:               root     kernel mount /ceph-rbd
                         root       1337 ..c.. bash
    [root@node3 huan_yang]#  kill -9 1337
    [root@node3 huan_yang]#  umount /osd3
    

    跨域

    https://blog.csdn.net/lambert310/article/details/51683775

    切换用户问题

    su - jenkins 后 -bash-4.2$ ,看不到所在目录
    查看 /home/jenkins 下没有该用户的环境变量,需要拷贝过去

    cp -a /etc/skel/. /home/jenkins/
    

    再次切换用户 [jenkins@centos-AutomJenkinsSlave1-4054 ~]$

    两种后台运行工具

    screen

    [root@one tmp]# yum -y install screen
    [root@one tmp]# screen    #进入后台
    [root@one tmp]# top   #启动一个需要在后台运行的进程,ctrl+a+d  返回前台
    [root@one tmp]# screen -ls  #查看后台进程,得到一个进程号
    There is a screen on:
            23404.pts-0.one (Detached)
    1 Socket in /var/run/screen/S-root.
    [root@one tmp]# screen -r 23404  #回到该进程后台
    

    daemonize unix系统后台守护进程管理软件

    [root@one tmp]# git clone git://github.com/bmc/daemonize.git
    [root@one tmp]# cd daemonize/
    [root@one daemonize]# sh configure && make && make install
    

    此处我们使用daemonize启动一个tomcat服务

    [root@one daemonize]# ./daemonize -c /usr/local/xwiki-tomcat/bin/  /usr/local/xwiki-tomcat/bin/up.sh  # 【./daemonize -c 启动脚本路径 启动脚本】 由于此种方式启动不会报错,要养成查看进程的习惯
    [root@one daemonize]# ps -ef|grep tomcat
    [root@one daemonize]# cat /usr/local/xwiki-tomcat/bin/up.sh  
    ./startup.sh
    

    timeout命令

    运行指定的命令,如果在指定时间后仍在运行,则杀死该进程。用来控制程序运行的时间。
    ”s”代表秒(默认值),”m”代表分,”h”代表小时,”d”代表天
    用法:

    timeout 5 ping 10.2.8.70     #执行该命令5s后结束该进程
    

    centos空间清理

    今天收到告警某一台服务器上/空间快满了,df -h和du -sh 查看结果却不一样

    df -h 
    /dev/vda1        40G   38G  3.0G  93% /
    
    du -sh /
    6.4G    /
    
    lsof -n|grep deleted
    nginx     17143           nobody    7w      REG              253,1 32734855528  101628969 /usr/local/openresty/nginx/logs/c3s-api.ccint.access.log (deleted)
    nginx     26798             root    7w      REG              253,1 32734855528  101628969 /usr/local/openresty/nginx/logs/c3s-api.ccint.access.log (deleted)
    

    发现这两个这两个进程一直在使用这个文件,文件删除后,空间却仍不能释放。
    kill -9 17143 26798,或不中断服务 ./nginx -s reload && kill -9 17143
    df -h 查看,空间释放了。


    1. ↩︎

  • 相关阅读:
    HTML5: HTML5 WebSocket
    mfs-管理员
    java实现平面点最小距离
    java实现平面点最小距离
    java实现平面点最小距离
    java实现排他平方数
    java实现排他平方数
    java实现排他平方数
    java实现排他平方数
    java实现排他平方数
  • 原文地址:https://www.cnblogs.com/huandada/p/10458338.html
Copyright © 2011-2022 走看看