PID 進程號,用來標記各個進程;CentOS6中起始的第一個進程為init
7中為systemd
進程優先級:
系統優先級:數字越小,優先級越高
0-139(4,5中)
各有140個運行隊列和過期隊列
0-98,99(6中)
實時優先級:99-0:值越大優先級越高
nice值:-20到19,對應系統優先級100-139或99
進程狀態:
運行:running;就緒:ready; 睡眠:可中斷——interruotable
不可中斷——uninterruptable
停止:stopped,暫停與內存,但不會被調度,除非手動啟動;僵死:zombie,結束進程,父進程結束前,子進程不關閉
Linux內核:搶占式多任務(多任務同時進行,交叉運行)
進程類型:
守護進程:daemon,在系統引導過程中啟動的進程,和終端無關進程
前端進程:跟終端相關,通過終端啟動的進程
注意:兩者之間可以相互轉化
pstree -p(能查看編號) {}的為線程(thread)線程之間共享資源
ps 用來查看進程信息
支持三種選項:
UNIX選項 如 -A -e
BSD選項 a
GUN –help
默認顯示當前終端中的進程:
a 包含所有終端中的進程
x 包括不鏈接終端的進程
u 顯示進程所有者的信息
f 顯示進程的父進程
o 屬性… 顯示定制的信息 —— xao pid|%cpu|%mem|euid|ruid|ni(nice值)|pri(priority)|psr(processorCPU編號)|rtprio(實時優先級)
aux(常用)
進程優先級
nice 命令
nice [option] [COMMAND [ARG]…]
nice -n 10 command
nice –6 command 賦予-6優先級
renice命令
renice [-n] priority pid …
renice -9 pid 賦予-9優先級
搜索進程
預定義模式:pgrep
[option] pattern
-u uid : 生效者
-U uid :真正發起運行命令者
-t terminal :與指定終端相關的進程
-l :顯示進程名
-a :顯示完整格式的進程名
-P pid :顯示指定進程的子進程
pidof command 直接查看進程號
uptime 顯示當前系統時間、運行時間、幾個用戶登錄、平均負載(1、5、10分鐘的負載,一般不超過1)
top 相當于windows的任務管理器,實時監控
-b 全部顯示
-d #:指定刷新時間間隔
-n # :刷新多少次后退出
首部信息的顯示:
uptime 信息 —— l
tasks及CPU信息 —— t
CPU信息單獨顯示 —— 1
us 用戶空間 sy 內核空間 ni 調整nice時間 id 空閑 wa 等待IO時間 hi 硬中斷 si 軟中斷 st 虛擬機偷走的時間
k 終止進程 由自己輸入想要終止的進程的進程號
w 將信息存到指定文件中——root下的.toprc
s 指定刷新時間間隔
htop 命令 更加方便
-d #:指定延遲時間
-u username:僅顯示指定用戶的進程
-s colume:以指定的字段進行排序
子命令
s:跟蹤選定進程的系統調用
l:顯示選定進程打開的文件列表
a:將選定的進程綁定至某指定CPU核心
t:顯示進程樹
vmstat命令:虛擬內存信息 vmstat 1 10 隔1s刷新 刷新10次停止
si :相對于內存來說的,從磁盤讀數據交換到內存的數據速率
so :相對于內存來說的,從內存交換到磁盤的速率 ,內存不夠時調用swap
-s :顯示統計信息
iostat:統計CPU和設備IO信息
pmap: 進程對應的內存映射
-x:顯示詳細格式的信息
另外一種實現:cat /proc/PID/maps
glances C/S模式下運行glances命令
服務器模式:
glances -s -B
IPADDR
IPADDR:指明監聽的本機的哪個地址
客戶端模式:
glances -c IPADDR
IPADDR:要連入的服務器端地址
dstat :系統資源統計
-c:顯示CPU相關信息
-C#,#,…,total
-d:顯示disk相關信息
-D total,sda,sdb,…
-g:顯示page相關統計數據
-m:顯示memory相關統計數據
-n;顯示network相關統計數據
-p:顯示process相關統計數據
-r:顯示io請求相關的統計數據
-s:顯示swapped相關的統計數據
kill命令:
向進程發送控制信號,以實現對進程管理,每個信號對應一個數字,信號名稱以SIG開頭(可省略),不區分大小寫
顯示當前系統可用信號: kill -l , trap -l
常用信號:man 7
signal
1)SIGHUP:無須關閉進程而讓其重讀配置文件
2)SIGINT:終止正在進行的進程;相當于Ctrl+c
3)SIGQUIT:相當于ctrl+\
9)SIGKILL:強制殺死正在進行的進程
15)SIGTERM:終止正在進行的進程
18)SIGCONT:繼續運行
19)SIGSTOP:后臺休眠
指定信號的方法:
(1)信號的數字標識:1,2,9等 kill -1 pid
(2)信號完整名稱:例如——SIGHUP
(3)信號的簡寫名稱:HUP
按PID:kill [-SIGNAL] pid …
kill -n SIGNAL pid ; kill -s SIGNAL pid
按名稱 : killall [-sigal] comm…
按模式:pkill [options] pattern
-SIGNAL
-u uid : 生效者
-U uid : 真正發起運行命令者
-t terminal : 與指定終端相關的進程
-l :顯示進程名
-a : 顯示完整格式的進程名
-P pid :顯示指定進程的子進程
后臺運行命令:
運行中的作業 : Ctrl +z
尚未啟動的作業:
COMMAND & ;
后臺作業雖然被送往后臺運行,但其仍然與終端相關;退出終端,將關閉后臺作業。如果希望送往后臺后,剝離與終端的關系:
nohup COMMAND
&
screen;COMMAND
查看當前終端所有作業:
jobs ——可以看到JOB_NUM
作業控制 :
fg JOB_NUM:把指定的后臺作業調回前臺
bg JOB_NUM :讓送往后臺的作業在后臺繼續運行
kill %JOB_NUM :終止指定的作業
同時運行多個進程,提高效率
方法1:
vim all.sh
f1.sh &
f2.sh &
f3.sh &
方法2:
(f1.sh &);(f2.sh &);(f3.sh &)
方法3:
{f1.sh& f2.sh& f3.sh&}
at 任務
在7中——systemctl is-enabled atd 查看at服務是否開機自動啟動
systemctl status
atd 目前是否處于啟動狀態
在6中——chkconfig –list atd 可用來查看不同模式下的狀態
service atd status
查看目前狀態
at 時間
at> 輸入指定命令
at>……
at> Ctrl +d 退出
ll /app 下是否生成了at.log文件
執行成功
輸入的指令的標準輸出不會在界面輸出,會以郵件的方式通知,但是廣播不會發送郵件,直接廣播通知
會生成下圖中的綠色文件,退出終端、重啟機器,計劃任務依舊會存在,執行完成后,刪除文件
常用選項:
-V:顯示版本信息
-l:列出指定列隊中等待運行的作業;相當于atq
-d #(atq 查看的編號或者at -l):刪除指定的作業;相當于atrm
-c:查看具體作業任務
-f /path/from/somefile
:從指定的文件中讀取任務
-m:當任務被完成后,將給用戶發送郵件,沒有標準輸出
注意:作業執行命令的結果中的標準輸出和錯誤以郵件通知給相關用戶
time:定義出什么時候進行at這項任務
HH:MM(小時:分鐘)
noon , midnight ,teatime(4pm),tomorrow
now+#{minutes,hours,days,weeks}
執行方式:
1、交互式 2、輸入重定向 3、at -f 文件
/etc/at.{allow,deny}控制用戶是否能執行at任務
白名單:/etc/at.allow 默認不存在,只有改文件中的用戶才能執行at命令
黑名單:/etc/at.deny 默認存在,拒絕改文件中的用戶執行at命令,而沒有在at.deny文件中的使用者則可以執行
at.allow :優先級高,有此文件,deny無效,只有此文件里的用戶可以使用at
at.deny:優先級低
如果都沒有,普通用戶全都拒絕使用at
周期性執行任務 cron計劃周期性執行的任務提交給crond,到指定時間會自動運行
相關的你程序包:
cronie:主程序包,提供crond守護進程及相關輔助工具
cronie-anacron:cronie的補充程序,用于監控cronie任務執行狀況,如cronie中的任務在過去該運行的時間點未能正常運行,則anacron會隨后啟動一次此任務
crontabs:包含CentOS提供系統維護服務
系統cron任務:系統維護作業
/etc/crontab
man 5 crontab 查看幫助
用戶cron任務:
crontab命令
日志:/var/log/cron
vim /etc/crontab (系統計劃任務)
每個不同時間之間 空格隔開彼此
時間表示法:
1、特定值
給定時間點有效取值范圍內的值
2、* 給定時間點上有效取值范圍內的所有值,表示“每…”
3、離散取值: # # #
4、連續取值 : #—#
5、在指定時間范圍上,定義步長
/# :#即為步長 例如:在分鐘 */2 表示為每2分鐘
日期與星期:
* * 10,20 * 0,6 之間的關系是或的關系,即每月的10號,20號,或者周六周日執行,且的關系時,可以用腳本來過濾星期
* * 10,20 * * 此為每月的10號和20號
關鍵字:
@reboot 重啟之后執行
@yearly 0 0 1 1 *
@annually 0 0 1 1 *
@monthly 0 0 1 * *
@weekly 0 0 * * 0
@daily 0 0 * * *
@hourly 0 * * * *
示例:每3小時echo和wall命令
0 */3 * * * root
/bin/echo “howdy”; /usr/bin/wall “welcome to magedu!”
注意:運行結果的標準輸出和錯誤以郵件通知各相關用戶
1、COMMAND > /dev/null ;2、COMMAND
&> /dev/null(或者 > /dev/null 2>&1)
對于cron任務來說,%有特殊用途;如果在命令中要使用%,則需要轉義,將%放置于單引號中,則可不用轉義
系統的計劃任務:
/etc/crontab
/etc/cron.d/ 配置文件
/etc/cron.hourly/ 腳本
/etc/cron.daily/ 腳本
/etc/cron.weekly/ 腳本
/etc/cron.monthly/ 腳本
普通用戶的計劃命令存放位置:
/var/spool/cron/
anacron系統:
/etc/anacrontab 配置文件,負責執行/etc/cron.daily /etc/cron.weekly/
/etc/cron.monthly 中的系統任務
字段1、如果在這些日子里沒有運行這些任務…..
字段2、在重新引導后等待這么多分鐘后運行它
字段3、任務識別器,在日志文件中識別
字段4、要執行的任務
由/etc/cron.hourly/0anacron執行
當執行任務時,更新/var/spool/anacron/cron.daily文件的時間戳
管理臨時文件:
CentOS6 使用/etc/cron.daily/tmpwatch 定時清除臨時文件
CentOS7 使用systemd-tmpfiles-setuo服務實現
配置文件:
/etc/tmpfiles.d/*.conf
/run/tmpfiles.d/*.conf
/usr/lib/tmpfiles/*.conf
/usr/lib/tmpfiles.d/tmp.conf
d /tmp 1777 root root 10d
d /var/tmp 1777 root root 30d
命令:
systemd-tmpfiles-clean|remove|create configfile
crontab 命令定義,每個用戶都有專用的cron任務文件:
/var/spool/cron/USERNAME
crontab 命令;
-l :列出所有任務;
-r:移除所有任務
-i:同-r一同使用,以交互式模式移除指定任務
-u user : 僅root用戶可運行,指定用戶管理cron任務
創建、編輯計劃任務 : crontab -e (-u wang 以wang用戶的身份執行,不謝就以自身執行)
不用寫用戶,直接寫時間和命令
e EDITOR 默認使用vi 可以用export EDITOR=vim 則編輯的時候為vim編輯器
vipw 相當于 vi /etc/passwd
控制用戶執行計劃任務:
/etc/cron.{allow,deny}
之前已經設置的某用戶的任務,將用戶放在deny中,該任務依舊執行
若是不小心刪除,恢復 可在 /etc/log/cron的日志中查看 執行的命令
任務執行實現秒級:
* * * * * for min
in 0 1 2 ; do echo “hi” ; sleep 20 ; done 實現每20s執行一次
sleep命令:
sleep # s/m/h/d (秒/分鐘/小時/天)
默認為s
cat sysstat 系統自定義的生成的日志
原創文章,作者:Immortals、zcy,如若轉載,請注明出處:http://www.www58058.com/75574