1. 程式人生 > >shell日常運維shell命令集合

shell日常運維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命令集合