lb5645284 发表于 2018-8-18 06:58:37

日常运维shell命令集合

  1、date 查看修改系统时间和日期
  date:
  -d
  显示字符串描述的时间
  -f
  显示DATEFILE文件中的每行时间
  -r
  显示文件的最后修改时间
  -R
  以RFC-2822兼容日期格式显示时间
  -rfc-2822
  以RFC-2822兼容日期格式显示时间
  -s
  设置时间为string
  -u
  显示或设定为Coordinated Universal Time时间格式
  运用-d参数
  当前时间
  # date -d now
  Thu Nov 14 22:52:45 PST 2013
  下个月的时间
  # date -d 'next monday'
  Mon Nov 18 00:00:00 PST 2013
  昨天的时间并格式化显示
  # date -d yesterday +%Y%m%d
  20131113
  显示文件最后修改的时间
  # date -r install.log
  Fri Sep 6 11:31:15 PDT 2013
  显示当前时间并格式化为 年-月-日 时:分:秒
  date "+%Y-%m-%d %H:%M:%S"
  2、grep
  过滤空行和注释行
  grep -v # /etc/swift/object-server.conf |grep -v "^$"
  egrep -v "#|^$" filename
  网站PV统计
  网站PV,即Page view,网站页面点击量
  统计当天/home/index页面点击量
  grep `date +%d/%b/%Y` access.log | grep "/home/index.html" -c
  3、vi
  vi下把文件内容追加到其他文件
  :1,129 w! >>nginx.conf.bak
  4、ps
  内存占用过高的进程排查
  ps aux | head -1;ps aux|grep -v PID|sort -rn -k +4|head
  5、find
  按目录深度查找文件
  find . -name "*.log*" -maxdepth 2 -mtime +15 -exec ls -l {} \;
  declare:
  -maxdepth 目录深度
  -atime-n[+n]: 找出文件访问时间在n日之内[之外]的文件。
  -ctime-n[+n]: 找出文件更改时间在n日之内[之外]的文件。
  -mtime -n[+n]: 找出修改数据时间在n日之内[之外]的文件。
  -amin   -n[+n]: 找出文件访问时间在n分钟之内[之外]的文件。
  -cmin   -n[+n]: 找出文件更改时间在n分钟之内[之外]的文件。
  -mmin-n[+n]: 找出修改数据时间在n分钟之内[之外]的文件。
  排除目录查找文件
  find . -path "./20161218" -prune -o -name "*.log*" -print
  declare:
  -path pathname -prune:   避开指定子目录pathname查找
  -o 或
  -a 且
  -not 相反
  6、进程
  让进程转入后台:
  Ctrl + z
  将进程转到前台:
  fg
  7、产生随机的十六进制数,其中n是字符数:
  openssl rand -hex n
  8、获取文本的md5 hash:
  echo -n "text" | md5sum
  9、压缩与解压缩
  zip:
  压缩当前目录下的内容为xxx.zip
  zip -r xxx.zip ./*
  删除压缩文件中的xxx.txt文件
  zip -d xxx.zip xxx.txt
  向压缩文件中添加xxx.txt文件
  zip -m xxx.zip ./xxx.txt
  同时压缩多个文件以及目录
  zip -r xxx.zip file1 file2 file3 /home/xxx/xxxx
  unzip:
  解压缩到指定目录
  unzip -d /home/xxxx xxx.zip
  解压缩所有的txt文件到指定目录
  unzip xxx.zip *.txt -d /home/xxxx
  找出文件压缩后删除源文件
  find -mtime +3 -name "file*"| xargs zip -rm log.zip
  查看压缩包内的文件
  unzip-v
  10、sed
  sed -s 's/^M//g' file 删除文件中windows格式下的空格
  sed   '2,5d' file 显示文件file,除去2-5行
  sed '/10/d' file 显示除去包含101-104的行
  sed '/^ *$/d file 删除文件中的空行
  sed -n '/10/p' file 只显示文件file中包含101-104的行
  sed 's/moding/moden/g' file 将moding替换为moden
  sed -n 's/^west/north/p' file 将west开头的行替换为north并显示出来
  sed 's/...$//' file 删除每一行的最后三个字符
  sed 's/^...//' file 删除每一行的头三个字符
  sed 's#moding#moden#g'   file将moding替换为moden,s后面的#代表搜索串和替换串之间的分界符
  sed'/101/,/105/s/$/20050119/' file将从101的匹配行到105的匹配行的行末增加"20050119"内容
  sed -e '/^#/!d' file 显示文件以#开头的行
  sed -e 's/:/ /g' passwd    替换文件所有冒号为空格
  -e不改变源文件,输出到标准输出
  -i改变源文件
  linux下删除windows文件的字符^M(ctrl-v)
  :%s/^M$//g # 去掉行尾的^M
  :%s/^M//g # 去掉所有的^M
  :%s/^M/\r/g # 将^M替换成回车
  # sed -e ‘s/^M/\n/g’filename
  vi下去掉冒号
  sed 's/://'g`
  把文件中enabled的参数由1改为0
  # sed -i '/enabled/s/1/0/' Iso.repo
  11、删除带有.log后缀的文件
  for i in `find -type d | grep ./`;do rm $i/*.log;done
  12、批量修改文件后缀
  rename .tar.gz zip *.tar.gz
  13、swift日常命令
  /etc/swift> sudo swift-ring-builder account.builder create 18 3 1
  /etc/swift> sudo swift-ring-builder container.builder create 18 3 1
  /etc/swift> sudo swift-ring-builder object.builder create 18 3 1
  /etc/swift> export ZONE=1
  /etc/swift> export STORAGE_LOCAL_NET_IP=192.168.1.101
  /etc/swift> export WEIGHT=100
  /etc/swift> export DEVICE=sdb1
  添加
  /etc/swift> sudo swift-ring-builder account.builder add z$ZONE-$STORAGE_LOCAL_NET_IP:6002/$DEVICE $WEIGHT
  /etc/swift> sudo swift-ring-builder container.builder add z$ZONE-$STORAGE_LOCAL_NET_IP:6001/$DEVICE $WEIGHT
  /etc/swift> sudo swift-ring-builder object.builder add z$ZONE-$STORAGE_LOCAL_NET_IP:6000/$DEVICE $WEIGHT
  删除
  /etc/swift> sudo swift-ring-builder account.builder remove z$ZONE-$STORAGE_LOCAL_NET_IP:6002/$DEVICE $WEIGHT
  /etc/swift> sudo swift-ring-builder account.builder remove z1-192.168.1.101:6020
  /etc/swift> sudo swift-ring-builder account.builder rebalance
  /etc/swift> sudo swift-init proxy start
  # vgdisplay
  # lvcreate -n swiftlv -L 10G vg0
  # mkfs.xfs /dev/mapper/vg0-swiftlv
  # vi /etc/fstab
  /dev/mapper/vg0-swiftlv /srv/node/sdb1    xfs   noatime,nodiratime,nobarrier,logbufs=8 0 0
  # service rsyncd start
  rsync rsync://pub@192.168.1.101
  /etc/swift> sudo swift-init all start
  curl -k -v -H'X-Storage-User: system:root' -H 'X-Storage-Pass: testpass' https://192.168.1.100:8080/auth/v1.0
  swift -Ahttp://192.168.1.100:8090/auth/v1.0 -U system:root -K testpass stat
  swift -Ahttp://192.168.1.100:8090/auth/v1.0 -U system:root -K testpass post container1
  swift -Ahttp://192.168.1.100:8090/auth/v1.0 -U system:root -K testpass upload container1 /etc/swift/*.ring.gz
  swift -Ahttp://192.168.1.100:8090/auth/v1.0 -U system:root -K testpass list
  同步所有的结点之后, 确保管理员( admin)可以访问 /etc/swift 目录,并且确保所有ring的.gz文件所有者都是正确的。

页: [1]
查看完整版本: 日常运维shell命令集合