一、知識整理
1、網絡客戶端工具:lftp,ftp,lftget,wget
子命令:get,mget,ls,help等
wget [opt] …[url]
-q 靜默模式
-c 斷點續傳
-O 保存位置
–limit-rates= 指定傳輸速率
登錄ftp之后:lcd 在本機切換目錄;get下載單個文件
!ls 查看本機文件
wget 可下載http資源
passive 切換模式:
被動模式:隨機端口
主動模式:使用20端口,指定命令后顯示mode off
curl 純字符界面瀏覽器
links 字符界面瀏覽器
links … –source查看源碼
–dump 查看文字,兩個命令只能在centos6中使用。
[root@localhost ~]# links 10.1.0.1 --source <title>Home Page</title> <body> <h1>內網服務</h1> <h3><a href="http://10.1.0.1:8088/">GitLab</a></h3> <h3><a href="http://10.1.0.1/zabbix">Zabbix Server (UserName:Guest,Password:)</a></h3> <h3><a href="http://10.1.0.1/cobbler/ks_mirror">Yum Repository</a></h3> <h3><a href="http://10.1.0.1/repofiles/">Repo Conf Files</a></h3> <h3><a href="http://10.1.0.1/fedora-epel/">Fedora EPEL</a></h3> <h3><a href="http://10.1.0.1/ks_files/">Kickstart Files</a></h3> <h3><a href="ftp://10.1.0.1/pub/">FTP Server</a></h3> </body>
2、quagga軟件包,配置動態路由
service ospfd start 無法啟動,缺少配置文件
cp /etc/quagga/ospfd.conf.sample ./ospfd.conf 將例子變為配置
service ospfd start后使用vtysh進入類似于思科設備中進行配置。思科命令。
3、uptime命令:顯示當前時間,系統已啟動的時間、當前上線人數,系統平均負載(1/5/10分鐘的平均負載,一般不會超過1)
[root@localhost ~]# uptime 19:49:41 up 14:36, 2 users, load average: 0.00, 0.00, 0.00
系統平均負載是指特定時間間隔內運行隊列中的平均進程數。如果每核當前活動進程數不大于3的話,那么系統的性能良好。如果每核任務數大于5,則有嚴重問題。如果是雙核cpu,當Load Average為6的時候說明機器已經被充分使用了。
4、pmap命令:進程對應的內存映射;
-x 顯示詳細格式的信息
[root@localhost init.d]# pmap -x 1 1: /usr/lib/systemd/systemd --switched-root --system --deserialize 21 Address Kbytes RSS Dirty Mode Mapping 00007f5bcab6a000 16 8 0 r-x-- libuuid.so.1.3.0 00007f5bcab6e000 2044 0 0 ----- libuuid.so.1.3.0 00007f5bcad6d000 4 4 4 r---- libuuid.so.1.3.0 00007f5bcad6e000 4 4 4 rw--- libuuid.so.1.3.0 00007f5bcad6f000 224 36 0 r-x-- libblkid.so.1.1.0
另一種查看方式:cat /proc/PID/maps
5、所謂中斷是指CPU對系統發生的某個事件做出的一種反應,CPU暫停正在執行的程序,保留現場后自動地轉去執行相應的處理程序,處理完該事件后再返回斷點繼續執行被“打斷”的程序。
中斷可分為三類,第一類是由CPU外部引起的,稱作中斷,如I/O中斷、時鐘中斷、控制臺中斷等。第二類是來自CPU的內部事件或程序執行中的事件引起的過程,稱作異常,如由于CPU本身故障(電源電壓低于105V或頻率在47~63Hz之外)、程序故障(非法操作碼、地址越界、浮點溢出等)等引起的過程。
第三類由于在程序中使用了請求系統服務的系統調用而引發的過程,稱作“陷入”(trap,或者陷阱)。前兩類通常都稱作中斷,它們的產生往往是無意、被動的,而陷入是有意和主動的。
Linux的OS時鐘的物理產生原因是可編程定時/計數器產生的輸出脈沖,這個脈沖送入CPU,就可以引發一個中斷請求信號,我們就把它叫做時鐘中斷。“時鐘中斷”是特別重要的一個中斷,因為整個操作系統的活動都受到它的激勵。系統利用時鐘中斷維持系統時間、促使環境的切換,以保證所有進程共享CPU;利用時鐘中斷進行記帳、監督系統工作以及確定未來的調度優先級等工作??梢哉f,“時鐘中斷”是整個操作系統的脈搏。
6、為提高效率,并行運行程序的方法:方法一:
將幾個腳本名寫入一個文件中執行,格式如下:
f1.sh &
f2.sh &
f3.sh &
方法二:命令行中:(f1.sh &);(f2.sh &);(f3.sh &) 相當于三個子進程
[root@localhost testdir]# (./f1.sh&);(./f2.sh&);(./f3.sh&) bbb aaa [root@localhost testdir]# ccc
方法三:匿名函數{ f1.sh& f2.sh & f3.sh & }
[root@localhost testdir]# { ./f1.sh& ./f2.sh& ./f3.sh& } [1] 22131 [2] 22132 [3] 22133 [root@localhost testdir]# aaa bbb ccc [1] 完成 ./f1.sh [2]- 完成 ./f2.sh [3]+ 完成 ./f3.sh
二、命令詳解及事例
1、ps命令:列舉進程
支持三種方式的選項:
unix選項:-a
BSD選項:a
GUN選項:–help
直接使用顯示當前終端中的進程
a 所有終端所有進程
x 包括不鏈接終端的進程
u 顯示進程所有者信息
f 顯示進程的父進程
o 屬性,選項顯示定制的信息
pid、comm、%cpu、%mem、state、tty、euser、ruser
STAT:進程狀態:
R:running
S:interruptable sleeping
D:uninterruptable sleeping
T:stopped
Z:zombie
+:前臺進程
l:多線程進程
N :低優先級進程
< :高優先級進程
s:session leader,會話(子進程)發起者
常用組合:-ef -eFH
-e 顯示所有進程
-f 顯示完整格式程序信息
-F 顯示更完整格式的進程信息
-H 以進程層級格式顯示進程相關信息
常用自定義組合:
-eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm
-axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
2、pgrep命令:ps grep按照預定義的模式,相當于按照給定選項將進程grep出來
-u uid :effective user,生效者
-U uid:real user,真正發起運行命令者
-t terminal:與指定終端相關的進程
-l 顯示進程名
-a 顯示完整格式的進程名
-P pid 顯示父進程為此處指定的進程的進程列表
pidof命令:查看進程的進程號
3、top命令:
有許多內置命令:P(大寫):以占據的cpu百分比排列
M:占據內存百分比顯示
T:累積占據cpu時長
首部信息顯示:uptime信息:l命令
tasks及cpu信息:t命令
cpu分別顯示:1(數字)
memory信息:m命令
修改刷新時間間隔:s
終止指定進程:k
保存文件W
欄位信息:us用戶空間;sy內核空間;ni調整nice時間;id空閑;wa等待IO時間;hi硬中斷;si軟中斷(模式切換);st虛擬機占用的時間。
PID任務進程ID;PPID父任務ID;RUSER任務所有者真實名;UID任務所有者ID;USER任務所有者名;GROUP任務所有者組名;TTY;PR優先級(priority);%CPU;%MEM;S進程狀態;TIME+(cpu時間,精確到秒)cpu time。
htop命令:
選項:-d # 指定刷新時間,默認是3秒
-b 以批次方式
-n # 顯示多少批次
-d # 指定延遲時間
-u UserName 僅顯示指定用戶的進程
-s COLUME 以指定字段進行排序
子命令:s 跟蹤選定進程的系統調用
l 顯示選定進程打開的文件列表
a 將選定的進程綁定至某指定cpu核心
t 按照cpu占用排序
4、vmstat命令:虛擬內存信息
每兩秒刷新一次,一共顯示五次:
[root@localhost init.d]# vmstat 2 5 procs -----------memory---------- ---swap-- -----io---- -system-- - -----cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 712888 1968 177292 0 0 1 0 11 12 0 0 100 0 0 0 0 0 712888 1968 177292 0 0 0 0 64 82 0 0 100 0 0 1 0 0 713012 1968 177292 0 0 0 0 61 83 0 0 100 0 0 0 0 0 713012 1968 177292 0 0 0 0 55 76 0 0 100 0 0 0 0 0 713012 1968 177292 0 0 0 0 61 90 0 0 100 0 0
信息意義:procs:r 等待運行的進程個數,和核心數有關;b 處于不可中斷睡眠的進程個數(被阻塞的隊列的長度)。
memory:swpd 交換內存的使用總量;free 空閑物理內存總量;buffer 用于緩沖的內存總量;cache 用于緩存的內存總量。
swap:si 從磁盤交換進內存的數據速率;so 從內存交換至磁盤的數據速率。此處的IO是以內存為參考。
system:in 中斷(interrupts)數,包括時鐘中斷;cs 進程切換次數(context switch)。
cpu:us 顯示用戶進程消耗cpu的時間百分比,此值過大說明需要優化;sy 內核進程消耗cpu的時間百分比,如果us+sy值過大說明cpu資源不足;id 顯示cpu處在空閑狀態的時間本分比;wa 表示IO等待所占cpu時間百分比,一般認為id+us+sy=100;st 虛擬機占用的百分比。
5、glances工具:
glances是一個由Python編寫,使用psutil庫來從系統抓取信息的基于curses開發的跨平臺命令行系統監視工具,基于GPL開源協定。我們能夠設置關鍵值及相應的標簽(careful、warning、critical),然后glances會幫我們用不同顏色標出系統達到某個瓶頸的信息。
常用選項:-b 以byte為單位顯示網卡數據速率
-d 關閉磁盤I/O模塊
-f /path/to/somefile 設定輸入文件位置
-o {THML|CSV} 輸出格式
-m 禁用mount模塊
-n禁用網絡模塊
-t # 延遲時間間隔
-1(數字1) 每個cpu的相關數據單獨顯示
內置命令:a 對進程自動排序
c 按cpu百分比排序
m 按內存百分比排序 p 按進程名字母順序排序
i 按讀寫頻率(I/O)排序 d 顯示和隱藏I/O統計信息
f 顯示和隱藏文件系統的統計信息 n 顯示和隱藏網絡接口統計信息
s 顯示和隱藏傳感器統計信息 y 顯示和隱藏硬盤溫度統計信息
l 顯示和隱藏日志 b 切換網絡I/O單位(byte|bits)
w 刪除警告日志 x 刪除警告和嚴重日志
1 切換全局CPU使用情況和每個cpu使用情況,類似選項1
t 以組合形式瀏覽網絡I/O
u 以累計形式瀏覽網絡I/O
q ESC 退出 h 幫助
glances基于C/S架構,因此可以遠程使用:方法如下:
首先在本機開啟glances -s(啟動客戶端/服務器模式)
[root@localhost init.d]# glances -s Glances服務器啟動了 0.0.0.0:61209
然后在客戶端上執行glances -c -P #.#.#.#連接服務器。
注意:在客戶端模式可以通過-p #來指定服務器端口;在服務器模式可以通過-B #.#.#.#指定綁定地址,也可以通過-p #來綁定監聽的TCP端口;默認的綁定地址是0.0.0.0,會監聽所有網絡接口的指定端口;限制的閾值由服務器決定;可以在命令行用-P來設置密碼。
1、dstat命令:系統資源統計
-c 顯示cpu相關信息
-C #,#,..,total
-d 顯示disk相關信息
-D total,sda,sdb..
-g 顯示page相關統計數據
-m 顯示memory相關統計數據
-n 顯示network相關統計數據
-p 顯示procs相關統計數據
-r 顯示io請求相關統計數據
-s 顯示swapped相關統計數據
[root@localhost glances]# dstat You did not select any stats, using -cdngy by default. ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- usr sys idl wai hiq siq| read writ| recv send| in out | int csw 0 0 100 0 0 0|4136B 637B| 0 0 | 0 0 | 53 58 0 0 100 0 0 0| 0 0 | 812B 826B| 0 0 | 52 57 ^C [root@localhost glances]# dstat -c ----total-cpu-usage---- usr sys idl wai hiq siq 0 0 100 0 0 0 0 0 100 0 0 0^C
支持更多長選項:–tcp –udp –unix –raw –socket –ipc(進程間通信) –top-cpu最占用cpu的進程; –top-io –top-mem –top-latency顯示延遲最大的進程,需要開啟模塊dstat_top_latency。
[root@localhost glances]# dstat --tcp ----tcp-sockets---- lis act syn tim clo 4 2 0 0 0 4 2 0 0 0^C [root@localhost glances]# dstat --unix --unix-sockets- dgm str lis act 20 113 31 82 20 113 31 82^C [root@localhost glances]# dstat --ip --sysv-ipc- msg sem shm 0 0 0 0 0 0^C [root@localhost glances]# dstat --top-io ----most-expensive---- i/o process bash 39k 43B sshd: root@ 146B 196B^C
2、常用信號:
(1) SIGHUP 無須關閉進程而讓其重讀配置文件
(2) SIGINT 中止正在運行的進程,相當于ctrl+c
(9) SIGKILL 強制停止
(15) SIGTERM 終止正在運行的進程
(18) SIGCONT 繼續運行
(19) SIGSTOP 后臺休眠
8、將進程放入后臺執行 & 和ctrl + z
fg %# :front ground 把指定的后臺作業調回前臺
bg %# :讓送往后臺的作業在后臺繼續運行
kill %# :終止指定的作業
kill命令:
-SIGNAL
-u uid 生效者的uid
-U uid 真正發起命令者
-t terminal 與指定終端相關的進程
-l 顯示進程名
-a 顯示完整格式的進程名
-P pid 顯示父進程為此處指定的進程的進程列表
9、任務計劃:
batch命令:系統自行選擇空閑時間執行指定的任務
at命令:at?。郏荨。裕桑停?/span>
TIME:HH:MM[yyyy-mm-dd];noon;midnight;teatime;tomorrow;now+#{minutes,…,weeks}
HH:MM 02:00在今日的HH:MM執行,時間過則第二天執行
指定具體時間04:00 2016-09-20; 04pm March 17;17:20 tomorrow
-V顯示版本信息
-l列出指定隊列中等待運行的作業,相當于atq
-d刪除指定作業,相當于atrm
-c查看具體作業任務
-f /PATH/FILE 從指定的文件中讀取任務
-m 當任務被完成后,給用戶發郵件,即使沒有標準輸出。
作業指定命令的結果中的標準輸出和錯誤均會以郵件的形式發給相關用戶,包括cron。
at命令可以使用交互式;輸入重定向;at -f FILE三種方式執行。 依賴于atd服務,其隊列放在/var/spool/at目錄中。
[root@localhost testdir]# at -f f1.sh 22:05 job 5 at Wed Sep 7 22:05:00 2016 [root@localhost testdir]# at 22:26 <<EOF > echo bbb > EOF job 6 at Wed Sep 7 22:26:00 2016 [root@localhost testdir]# at 22:06 at> echo ccc at> <EOT> job 7 at Wed Sep 7 22:06:00 2016 您在 /var/spool/mail/root 中有新郵件 [root@localhost testdir]# mail Heirloom Mail version 12.5 7/5/10. Type ? for help. "/var/spool/mail/root": 5 messages 2 new 1 user@localhost.local Tue Jul 26 10:01 138/5232 "[abrt] full crash report" 2 root Wed Sep 7 09:53 15/515 "Output from your job 1" 3 user@localhost.local Wed Sep 7 16:10 2189/149113 "[abrt] full crash report" >N 4 root Wed Sep 7 22:05 14/501 "Output from your job 5" N 5 root Wed Sep 7 22:06 14/501 "Output from your job 7"
白名單和黑名單:/etc/at.allow和/etc/at.deny。默認只有at.deny,當添加了allow后,沒有在allow中的用戶皆不能使用at;若兩個文件都不存在,只有root能使用at。
10、周期性任務計劃cron:
cronie主程序包;anacron補充程序,若有此程序,則cronie中的任務在該運行的時間點未能正常運行,則隨后會再次執行一次任務。
日志文件:/var/log/cron
系統任務文件,定義格式:/etc/crontab,格式中的時間是或關系如0 2 1,10,20 * 0,6,在給定的時間都執行。
@reboot Run once after reboot
@yearly 0 0 1 1 *
@annually 0 0 1 1 *
@monthly 0 0 1 * *
@weekly 0 0 * * 0
@daily 0 0 * * *
@hourly 0 * * * *
系統的計劃任務:
[root@localhost testdir]# cat /etc/cron cron.d/ cron.daily/ cron.deny cron.hourly/ cron.monthly/ crontab cron.weekly/
/etc/anacrontab配置文件負責執行hourly;daily;weekly;monthly幾個目錄的系統任務,執行任務后更新/var/spool/anacron文件的時間戳。
centos6中使用/etc/cron.daily/tmpwatch定時清除臨時文件。每個用戶都有專用的cron任務文件/var/spool/cron/USERNAME,目錄有suid權限。使用crontab命令:
-l 列出所有任務
-e 編輯任務
-r 移除所有任務
-i 同-r一同使用,以交互式模式移除指定任務
-u USER 僅root可以運行,指定用戶管理cron任務。使用此命令后,/var/spool/cron/下的以用戶名命名的文件屬主屬組會變成root,當用戶再此使用crontab -e命令編輯后,會將root更改后的文件覆蓋。
在cron任務中%有特殊用途,如果在命令中使用則需轉義;若放入單引號中,也可不轉義。
在秒級運行任務:在分鐘級使用sleep和usleep(微秒μs)。sleep 默認秒,m分鐘,h小時,d天。
計劃任務中的命令都不支持別名,需要更改配置文件或使用原名。
一、課后練習
1、每四小時備份一次/etc目錄至/backup,保存的文件名稱格式為“etc-yyyy-mm-dd-HH”.tar.xz。
* */12 * * * root date=$(date +%Y-%m-%d-%H) | tar zcf /testdir/etc-$date.tar.xz /etc
2、每周2,4,7備份/var/log/messages文件至/logs目錄中,文件名如“messages-yyyymmdd”。
0 0 * * 2,4,7 root date=$(date +%Y%m%d) | tar testdir/secure-$date.tar.xz /var/log/secure
3、每兩小時取出當前系統/proc/meminfo文件中以S或M開頭的信息追加至文件/tmp/meminfo.txt。
0 */4 * * * tar -zcf /testdir/etc`date +%F-%H`.tar.xz /etc &> /dev/null
4、工作日時間,每十分鐘執行一次磁盤空間檢查,一旦發小任何分區利用率高于80%,就執行wall報警。
*/10 * * * * root ./testdir/test4.sh
原創文章,作者:SilencePavilion,如若轉載,請注明出處:http://www.www58058.com/45663