bash command in practice

實用命令

  • 網(wǎng)卡綁定IP
    ifconfig eth0:1 192.168.1.99 netmask 255.255.255.0

  • 設(shè)置DNS和網(wǎng)關(guān)
    echo "nameserver 202.16.53.68" >> /etc/resolv.conf
    route add default gw 192.168.1.1

  • 查詢空行
    grep ^$ file1

  • 打印1-3行
    sed -n '1,3p' file1

  • 刪除空目錄
    find /data -type d -empty -exec rm -rf {};

  • 刪除空文件
    find /data -type f -size 0c -exec rm -rf {};
    find /data -type f -size 0c|xargs rm –f

  • 刪除五天前文件
    find /data -type f -mtime +5 -exec rm -rf {};

  • 踢出用戶
    pkill -kill -t pts/1

  • 查看端口開放情況
    nmap -ps ip

  • 查看網(wǎng)絡(luò)連接
    netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

  • 查看庫文件
    ldconfig -v

  • 查看網(wǎng)卡驅(qū)動版本
    ethtool -i tool

  • tcpdump tcp port 80 host ip

  • 合并文件:
    -- 取出兩個文件的并集(重復(fù)的行只保留一份)
    cat file1 file2 | sort | uniq
    -- 取出兩個文件的交集(只留下同時存在于兩個文件中的文件)
    cat file1 file2 | sort | uniq -d
    -- 刪除交集,留下其他的行
    cat file1 file2 | sort | uniq –u

  • 打印文本模式運行的服務(wù)
    chkconfig --list|awk '$5~/on/{print $1,$5}'

  • 查看進程,按內(nèi)存從大到小排列
    ps -e -o "%C : %p : %z : %a"|sort -k5 -nr

  • 查看http的并發(fā)請求數(shù)及其TCP連接狀態(tài)
    netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

  • 查看有多少個活動的PHP-cgi進程
    netstat -anp | grep php-cgi | grep ^tcp | wc -l

  • 查看硬件制造商
    dmidecode -s system-product-name

  • 查看線程數(shù)
    cat /proc/${pid}/status
    pstree -p ${pid}
    top -p ${pid} 再按H
    top -H
    ps xH
    ps -mp PID

1.查看文件內(nèi)容
cat check_snmp_time_sync.py |while read line;do echo $line;done while read line;do echo $line;done < ./check_snmp_time_sync.py

2.統(tǒng)計連接數(shù)
while :; do tail -n 100 /app/nginx/web.log |cut -d -f 8|sort|uniq -c;sleep 5;done

3.統(tǒng)計代碼行數(shù)
find . -type f -name "*.sh" |xargs wc -l

4.統(tǒng)計sh文件含有的lst字符串并排列
find . -type f -iname "*.sh"|xargs grep -c "lst"|grep -v ":0$"|sort -t : -k 2 -nr

5.查找并替換內(nèi)容
find . -type f -print|grep -v ".*\.\(jpg\|JPG\)"|xargs sed -i "s/ab/cd/g"

6.語句

  • if...else:
if [ $? -eq 0 ];
then
echo "successed";
fi
  • for:
for ip in 192.168.1.{1..255};
do
ping ${ip} -w 1 &>/dev/null&&\
echo ${ip} is up;
done

for ip in $(cat iplist);do
scp config/${ip}.conf ${ip}:/home/max
done

socket=$(ps -ef|grep mysql|grep -v grep|grep sock|awk 'BEGIN{FS = "--"}{for (f=1; f <= NF; f+=1) {if ($f ~ /sock/) {print $f}}}'|awk -F'=' '{print $2}'|grep 3306);echo $socket

  • while:
do sleep 1
netstat -lanp|grep 3306|grep ESTABLISHED|\
awk '{print $5}'|awk -F ':' '{print $1}'|sort|uniq|wc -l|\
awk 'BEGIN{a="'$(date +%H:%M:%S)'";}{printf "%s,%d\n",a,$1}' \
>> access_num.log;done

7.查看系統(tǒng)資源
ps aux |head -1 ;ps aux|grep -v PID|sort -rn -k +3|head #查看CPU前十進程
ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head #占內(nèi)存前10的進程

du -sk /* |sort -rn|head #占磁盤最大的前十個文件
find . -type f -exec ls -l -h {} ;|sort -rn -k 5|head -n 5 #前5文件大小

8.查看CPU及硬盤大小

  • 查看CPU型號
    grep 'model name' /proc/cpuinfo|head -1|awk -F":" '{print $2}'
    cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

cat /proc/cpuinfo|grep -E 'vendor_id|model name|cpu MHz|cache size'|sort -n|uniq -c;

  • 查看CPU個數(shù)
    grep 'physical id' /proc/cpuinfo|sort -u|wc -l
    cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

  • 查看邏輯CPU個數(shù)
    grep 'processor' /proc/cpuinfo|sort -u|wc -l
    cat /proc/cpuinfo| grep "processor"| wc -l

  • 查看每個物理CPU中core的個數(shù)(即核數(shù))
    cat /proc/cpuinfo| grep "cpu cores"| uniq

  • 查看硬盤大小
    fdisk -l|grep "Disk /dev/sda"|awk '{print 3}'|awk '{sum+=1}'END'{print sum}'

9.查看系統(tǒng)信息
uname -ar
top -n 1|grep -E 'Tasks|Mem|Swap';
netstat -nltp
cat /proc/net/sockstat

getconf LONG_BIT #查看是否是64位

ifconfig|grep HWaddr|awk '{print 0,4,$5}' #查看mac
ifconfig|grep inet|grep -v inet6|grep -v 127.0.0.1 #查看IP信息

dmidecode |grep Product

iostat 3 3
iostat -d -x -k 1 10 #查看設(shè)備使用率(%util)柜蜈、響應(yīng)時間(await)應(yīng)該低于5ms,如果大于10ms就比較大了
iostat -d -k 1 10 #查看TPS和吞吐量信息
iostat -c 1 10 #查看cpu狀態(tài)

10.sed
sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config

  • 文件5-10行的前面加#號
    sed -i "5,10s/^/#/" host_slow.log

  • 查找 00:10:34至00:10:38的日志內(nèi)容
    cat server.out.20160114 |sed -n '/2016-01-13 00:10:34/,/2016-01-13 00:10:38/p'

  • sed用法脱货,把空格和tab開頭的去除掉
    sed 's/^[ t]//g' #等于 sed 's/^[ \t]//g

11.find
find . type f -name *.log |xargs rm #刪除文件
find . type f -name *.sh |xargs -i mv {} /tmp #移動文件

xargs 分批處理前面的查詢結(jié)果

find . -perm 777|xargs ls -l
find . -mtime -5 #5天內(nèi)更新的文件
find . -mtime +5 #5天前更改的文件
find ./ -iregex ".*.phd"|xargs rm -rf #根據(jù)文件名后綴刪除文件

12.grep
grep 'SELINUX=enforcing' /etc/selinux/config 2>&1 >/dev/null && echo PASS || echo FAIL

blkid /dev/sda1|awk -F"=" '{print 2}'|awk '{print2}'

blkid /dev/sda1 | awk -F"=" '{print 2}'|awk '{print1}'|cut -d""" -f2 #查看id
lsblk | grep sda1 #列出塊文件

  • egrep:
    egrep "memory_limit|post_max_size|upload_max_filesize"

ps -ef|grep java|egrep -o "[1-9]{4}"|head -n1 #查看java進程

  • 查進程并殺除
    ps -ef|grep "httpd"|grep -v grep|awk '{print $2}'|xargs kill

13.awk

  • 查看指定標簽
doc=`grep "DocumentRoot" /etc/httpd/conf.d/vhost-server0.conf | awk '{print $2}' | awk -F\" '{print $2}'`
context=`ls -lZd $documentroot | awk -F: '{print $3}'
  • 查看文件權(quán)限
    ls -lh /root/foo.sh |awk '{print $1}'

  • 顯示以字母t開頭的所有用戶信息
    awk '/^t/{print $1}' /etc/passwd

  • 顯示uid大于500的用戶
    awk -F: '3>=500{print1,$3}' /etc/passwd

  • BEGIN在第一行被讀取前執(zhí)行,END表示在最后一行匹配完再執(zhí)行

  • 統(tǒng)計各種shell的使用人數(shù)
    awk -F: '{shell[$NF]++}END{for (A in shell){print A,shell[A]}}' /etc/passwd

  • 統(tǒng)計各種TCP連接狀態(tài)的個數(shù)
    netstat -ant | awk '/^tcp/{STATE[$NF]++}END{for (s in STATE) print s,STATE[s]}'

  • 統(tǒng)計日志文件中每個IP地址的訪問量

awk '{counts[$1]++} END{for(ip in counts) print counts[ip],ip}' /var/log/httpd/access_log

cd /usr/local/nginx/logs
awk '{counts[$1]++} END{for(ip in counts) print counts[ip],ip}' access.log |sort -rn|head -n 30
cat access.log|sort|awk '$NF!~/-/ {print $1"," $NF}'|uniq |awk -F  , '{print $1}'|uniq -c|sort -nr|head -20
  • 截取字段
    dir -l|awk '{print 3,4,$9}'

  • NR用法

  • 打印第一行和第二項
    free -m | awk 'NR==2 {print $2}'

cat /etc/issue.net|awk 'NR==1 {print}' #打印第二行

14.date
date +%F -d "-3 days" #3天前
date '+%F %r'

15.setfacl
setfacl -R -m u:ljun:rwx /javasoft/ #設(shè)置ljun有rwx權(quán)限
setfacl -R -m d:u:qhfz:rwx /data2/ResourceCase

16.nmap
nmap -sn 10.192.179.0/24 #查看活躍的主機

17.mount
mount -t cifs -o username=andy,password=andy //172.168.1.10/common /test

18.cat用法

cat> /etc/yum.repos.d/LNMP+zabbix.repo <<'EOF'
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/6/$basearch/
gpgcheck=0
enabled=1
EOF

cat << EOF > /tmp/3.txt
> aaaa
> bbbb
> cccc
> dddd
> EOF
  • 創(chuàng)建500M的主分區(qū), \n換行
    echo -e "n\np\n1\n\n+500M\nw\n"|fdisk /dev/sdb &>/dev/null

cat -b #對非空行編號
cat -n #輸出所有行的行號

19.ps
ps -A -o stat,ppid,pid,cmd |grep -e "^[Zz]" #查看僵尸進程
ps -A -o stat,ppid,pid,cmd|grep -e "^[Zz]"|awk '{print $2}'|xargs kill -9 #批量刪除僵尸進程

ps aux | less
#vsz:進程所占用內(nèi)存的總大小 以kb為單位
#rss:進程所占用實際物理內(nèi)存的大小 以kb為單位

lsof -i:80

20.top
平均負載/CPU個數(shù)>1 CPU資源飽和
平均負載/CPU個數(shù)<1 CPU資源正常
top:
M #按內(nèi)存大小分
P #按CPU占用分
T #按進程運行時間分

21.set 顯示環(huán)境變量
sar 5 5 #查看CPU

uniq -c #刪除重復(fù)值
sort #對單詞排序
sort -k1,1nr #按照第一個字段數(shù)值排序,逆序

21.iptables

service iptables save  #保存規(guī)則到/etc/sysconfig/iptables文件
iptables -L -n --line-number
iptables -vnL
service iptables status 

iptables -L -t nat #查看nat策略
iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 8097 -j ACCEPT

-A增加一條規(guī)則到最后
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 8097 -j ACCEPT

-D刪除策略
iptables -D INPUT -p tcp -m state --state NEW -m tcp --dport 8017 -j ACCEPT

22.ifconfig
ifconfig eth0:0 ip2 netmask 255.255.255.0 #臨時綁定IP
ip addr add "10.70.72.123/24" dev eth0

23.netstat

netstat -nat|grep -i "80"|wc -l
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
netstat -n | awk '/^tcp/ {++S[$NF]};END {for(a in S) print a, S[a]}'
netstat -n |awk '/^tcp/ {print $NF}'|sort|uniq -c|sort -rn

netstat -ant | awk '{print $NF}' | grep -v '[a-z]' | sort | uniq -c


netstat -anlp|grep 80|grep tcp|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -n20
netstat -ant |awk '/:80/{split($5,ip,":");++A[ip[1]]}END{for(i in A) print A,i}' |sort -rn|head -n20

tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |head -20

netstat -n|grep TIME_WAIT|awk '{print $5}'|sort|uniq -c|sort -rn|head -n20
netstat -an | grep SYN | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | sort -nr | more

24.壓縮解壓縮
tar tvf apache-tomcat-8.0.36.tar.gz #不解壓查看壓縮文件內(nèi)容
gzip -c filename >filename.gz #壓縮保留源文件
gunzip -c filename.gz > filename #解壓保留源文件

25.設(shè)置環(huán)境變量

echo "export JAVA_HOME=/usr/local/jdk1.8.1_12" >>~/.bashrc
. ~/.bashrc
echo $JAVA_HOME

26.-a和&&的區(qū)別
-a 用在[]里:

if [[ -f /root/while.sh -a -f /root/pid.sh ]]
then 
echo exist
fi

&&都可以

ls -F -R /etc/ #顯示目錄下文件及文件夾

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蚤认,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子糕伐,更是在濱河造成了極大的恐慌砰琢,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件良瞧,死亡現(xiàn)場離奇詭異氯析,居然都是意外死亡,警方通過查閱死者的電腦和手機莺褒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門掩缓,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人遵岩,你說我怎么就攤上這事你辣。” “怎么了尘执?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵舍哄,是天一觀的道長。 經(jīng)常有香客問我誊锭,道長表悬,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任丧靡,我火速辦了婚禮蟆沫,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘温治。我一直安慰自己饭庞,他們只是感情好,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布熬荆。 她就那樣靜靜地躺著舟山,像睡著了一般。 火紅的嫁衣襯著肌膚如雪卤恳。 梳的紋絲不亂的頭發(fā)上累盗,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機與錄音突琳,去河邊找鬼若债。 笑死,一個胖子當著我的面吹牛本今,可吹牛的內(nèi)容都是我干的拆座。 我是一名探鬼主播主巍,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼挪凑!你這毒婦竟也來了孕索?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤躏碳,失蹤者是張志新(化名)和其女友劉穎搞旭,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體菇绵,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡肄渗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了咬最。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片翎嫡。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖永乌,靈堂內(nèi)的尸體忽然破棺而出惑申,到底是詐尸還是另有隱情,我是刑警寧澤翅雏,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布圈驼,位于F島的核電站,受9級特大地震影響望几,放射性物質(zhì)發(fā)生泄漏绩脆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一橄抹、第九天 我趴在偏房一處隱蔽的房頂上張望靴迫。 院中可真熱鬧,春花似錦害碾、人聲如沸矢劲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至躺同,卻和暖如春阁猜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蹋艺。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工剃袍, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人捎谨。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓民效,卻偏偏與公主長得像憔维,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子畏邢,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容