一、進程的查看與管理
1、查看
a、ps 靜態查看
格式:ps [選項]
選項:
a:與終端相關的
x:與終端無關的
u:以用戶爲中心
-e:顯示所有進程
-f:顯示完整格式程序信息
-l:顯示完整的列
-H: 以進程層級格式顯示進程相關信息
~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
VSZ: Virtual memory SiZe,虛擬內存集
RSS: ReSident Size, 常駐內存集
STAT:進程狀態
R:running
S: interruptable sleeping
D: uninterruptable sleeping
T: stopped
Z: zombie
+: 前臺進程
l: 多線程進程
N:低優先級進程
<: 高優先級進程
s: session leader
b、top 動態查看
有許多內置命令:
排序:
P:以佔據的CPU百分比;
M:佔據內存百分比;
T:累積佔據CPU時長;
首部信息顯示:
uptime信息:l命令
tasks及cpu信息:t命令
cpu分別顯示:1 (數字)
memory信息:m命令
退出命令:q
修改刷新時間間隔:s
終止指定進程:k
選項:
-d #: 指定刷新時間間隔,默認爲3秒;
-b: 以批次方式;
-n #: 顯示多少批次;
c、pstree 查看進程樹
格式:pstree [選項]
選項:
-a:顯示完整信息
-u:顯示用戶名
-p:顯示進程id號
d、pgrep 根據指定信息查看進程
格式:pgrep 指定信息
例如:pgrep -l -U 用戶名 -t 終端
-l:顯示進程名稱
-U:指定用戶
-t:指定終端
2、進程的啓動
a、手動啓動
前臺啓動:直接在終端運行程序即可
後臺啓動:將原本在前臺執行的程序調到後臺運行 在運行程序後加上&
前後臺調度的操作:
ctrl+z:將正在運行的進程調入後臺並停止執行
jobs:查看後臺進程列表
fg [進行列表序號]:將後臺停止的進程恢復前臺運行
b、調度啓動
一次性計劃任務:at
週期性計劃任務:crontab
3、結束進程
ctrl+c
kill PID號
kill -9 PID號 //慎用
killall 進程名稱
killall -9 進程名稱 //慎用
pkill -U 用戶名 -t 終端 //結束指定用戶在指定終端上的進程
pkill -9 -U 用戶名 -t 終端 //慎用
二、計劃任務
1、一次性 at
確保:atd服務正在運行
格式:at [HH:MM] [YYYY-mm-DD] //按ctrl+d提交
例如:#at 21:30
at>shutdown -h now
atq //查看尚未執行的任務列表
atrm n //刪除指定尚未執行的任務
2、週期性
週期性任務計劃:cron
相關的程序包:
cronie: 主程序包,提供了crond守護進程及相關輔助工具;
cronie-anacron:cronie的補充程序;用於監控cronie任務執行狀況;如cronie中的任務在過去該運行的時間點未能正常運行,則anacron會隨後啓動一次此任務;
crontabs:包含CentOS提供系統維護任務;
確保crond守護處於運行狀態:
CentOS 7:
systemctl status crond
...running...
CentOS 6:
service crond status
計劃要週期性執行的任務提交給crond,由其來實現到點運行。
系統cron任務:系統維護作業
/etc/crontab
用戶cron任務:
crontab命令
系統cron任務
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
例如:晚上9點10分運行echo命令;
10 21 * * * gentoo /bin/echo "Howdy!"
時間表示法:
(1) 特定值;
給定時間點有效取值範圍內的值;
(2) *
給定時間點上有效取值範圍內的所有值;
表示“每...”;
(3) 離散取值:,
#,#,#
(4) 連續取值:-
#-#
(5) 在指定時間範圍上,定義步長:
/#: #即爲步長
例如:每3小時echo命令;
0 */3 * * * gentoo /bin/echo "howdy!"
用戶cron:
crontab命令定義,每個用戶都有專用的cron任務文件:/var/spool/cron/USERNAME
crontab命令:
crontab [-u user] [-l | -r | -e] [-i]
-l: 列出所有任務;
-e: 編輯任務;
-r: 移除所有任務;
-i:同-r一同使用,以交互式模式讓用戶有選擇地移除指定任務;
-u user: 僅root可運行,代爲爲指定用戶管理cron任務;
注意:運行結果以郵件通知給相關用戶;
(1) COMMAND > /dev/null
(2) COMMAND &> /dev/null
對於cron任務來講,%有特殊用途;如果在命令中要使用%,則需要轉義;不過,如果把%放置於單引號中,也可以不用轉義;