shell日常运维shell命令集合

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell日常运维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[1-4]/d' file 显示除去包含101-104的行

sed '/^ *$/d file 删除文件中的空行

sed -n '/10[1-4]/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://[email protected]


/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文件所有者都是正确的。




以上是关于shell日常运维shell命令集合的主要内容,如果未能解决你的问题,请参考以下文章

运维日常集合(个人向 坚持更新)

日常运维工作shell脚本案例

日常巡检shell脚本

shell脚本——日常巡检脚本

MongoDB日常运维操作命令小结

Redis日常运维-常用命令汇总