日常运维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

 

不同的行:
grep -v -wvf file file2  

相同的行:
grep -wf file file2

grep -i 不区分大小写

 

网站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

 

查看进程占用CPU和内存
ps aux --sort=-pcpu | head -10
ps aux --sort -rss | head -10

 

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改变源文件

 

把一定时间段内的文件内容导入到另一个文件
sed -n '/2020-02-28 12:00:00/,/2020-02-28 12:10:00/'p hbaseserv.log >> /home/hduser/hbaseserve_12_10.log

 

删除日志文件的前10000000行
sed -i '1,1000000d' nohup.out

 

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、split 分割合并文件

按行数分割
split -l 500 file.txt new_file
会分割为new_filea、new_fileb、new_filec ......

加上-d,使用数字后缀;加上--verbose,显示分割进度

按字节大小分割
split -b 50m file.txt new_file

 

合并
cat new_file* > file.txt

14、账户

普通账户使用crontab
crontab -e -u username

给账户加sudo权限
usermod -a -G sudo username

把用户加入组而不影响该用户添加的其他组
usermod -a -G docker username

 

15、awk

计算和
awk '{sum+=$1}END{print sum}'

 

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

posted @ 2020-04-03 17:57  断臂人123  阅读(239)  评论(0编辑  收藏  举报