程序和计划任务管理( 查看进程ps,控制进程,终止命令进程,top命令,at一次性任务,crontab周期任务)
文章目錄
- 程序,進(jìn)程,線程之間的關(guān)系
- 查看進(jìn)程
- ps命令查看靜態(tài)統(tǒng)計(jì)信息
- 查看ps aux命令 簡(jiǎn)單的列表查看進(jìn)程信息
- 運(yùn)用grep命令過濾bash進(jìn)程
- 查看top命令
- pgrep命令--查看進(jìn)程信息
- pstree命令--查看進(jìn)程樹
- 控制進(jìn)程(進(jìn)程的啟動(dòng),調(diào)節(jié),終止)
- 啟動(dòng)進(jìn)程的方式
- 改變進(jìn)程的運(yùn)行方式
- 查看后臺(tái)進(jìn)程 jobs 命令
- 將后臺(tái)的進(jìn)程恢復(fù)運(yùn)行 fg 命令
- 終止進(jìn)程執(zhí)行平常可以使用Ctrl + C組合鍵強(qiáng)制中斷
- 使用kill命令終止進(jìn)程
- 使用killall命令終止進(jìn)程
- pgrep 查看tom運(yùn)行的進(jìn)程
- pkill 強(qiáng)行終止tom運(yùn)行的進(jìn)程
- 任務(wù)計(jì)劃
- crontab周期性任務(wù)設(shè)置
- /etc/crontab 全局配置文件
- 使用crontab命令管理用戶的計(jì)劃任務(wù)
程序,進(jìn)程,線程之間的關(guān)系
程序
-
保存在硬盤,光盤等介質(zhì)中的可執(zhí)行代碼和數(shù)據(jù)
-
靜態(tài)保存的代碼
進(jìn)程 -
在CPU及內(nèi)存中運(yùn)行的程序代碼
-
動(dòng)態(tài)執(zhí)行的代碼
-
父.子進(jìn)程:每個(gè)進(jìn)程可以創(chuàng)建一個(gè)或多個(gè)進(jìn)程,是一個(gè)依賴關(guān)系。
線程 -
操作系統(tǒng)能夠進(jìn)行運(yùn)算調(diào)度的最小單位。
-
包含在進(jìn)程之中,是進(jìn)程中的實(shí)際運(yùn)作單位。
-
一條線程指的是進(jìn)程中一個(gè)單一順序的控制流,一個(gè)進(jìn)程中可以并發(fā)多個(gè)線程,每條線程并行執(zhí)行不同的任務(wù)
舉例:
以一個(gè)工廠結(jié)構(gòu)舉例
應(yīng)用程序=工廠
進(jìn)程=車間
線程=工人
高并發(fā)處理→依賴于多線程操作
查看進(jìn)程
ps命令查看靜態(tài)統(tǒng)計(jì)信息
ps命令是Linux系統(tǒng)中最為常用的進(jìn)程查看工具,主要用于顯示包含當(dāng)前運(yùn)行的各進(jìn)程完整信息的靜態(tài)快照
a:顯示當(dāng)前終端下所有進(jìn)程信息,包含其他用戶進(jìn)程。與“x”選項(xiàng)結(jié)合時(shí)顯示系統(tǒng)中所有進(jìn)程信息
* -e:顯示系統(tǒng)內(nèi)的所有進(jìn)程信息* x:顯示當(dāng)前用戶在所有終端下的進(jìn)程信* -f:使用完整的格式顯示進(jìn)程信息*-l:使用長(zhǎng)格式顯示進(jìn)程信息查看當(dāng)前的進(jìn)程
[root@localhost ~]# psPID TTY TIME CMD18669 pts/1 00:00:00 bash18685 pts/1 00:00:00 ps查看ps aux命令 簡(jiǎn)單的列表查看進(jìn)程信息
[root@localhost ~]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 127988 6576 ? Ss 10:34 0:01 /usr/lib/systemd/systemd --switched-root --system --deser root 2 0.0 0.0 0 0 ? S 10:34 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 10:34 0:00 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S< 10:34 0:00 [kworker/0:0H] root 6 0.0 0.0 0 0 ? S 10:34 0:00 [kworker/u256:0] root 7 0.0 0.0 0 0 ? S 10:34 0:00 [migration/0] root 8 0.0 0.0 0 0 ? S 10:34 0:00 [rcu_bh] root 9 0.0 0.0 0 0 ? R 10:34 0:01 [rcu_sched] root 10 0.0 0.0 0 0 ? S< 10:34 0:00 [lru-add-drain] root 11 0.0 0.0 0 0 ? S 10:34 0:00 [watchdog/0]*上述信息中每一列的字段的意思
? USER:啟動(dòng)該進(jìn)程的用戶賬號(hào)的名稱
? PID :該進(jìn)程在系統(tǒng)中的數(shù)字ID,在當(dāng)前系統(tǒng)中是唯一的
? TTY :表明該進(jìn)程在哪個(gè)終端上運(yùn)行,“?”表示不需要終端
? SATA: 顯示了進(jìn)程當(dāng)前的狀態(tài)
? START:啟動(dòng)該進(jìn)程的時(shí)間
? TIME:該進(jìn)程占用的CPU時(shí)間
? COMMAND:啟動(dòng)該進(jìn)程的命令名稱
? %CPU:占用CPU百分比
? %MEM:占用內(nèi)存百分比
? VSZ: 占用虛擬機(jī)內(nèi)存大小(swap)
? RSS: 占用物理內(nèi)存的大小(物理內(nèi)存)
ps -elf命令長(zhǎng)格式顯示系統(tǒng)進(jìn)程信息
[root@localhost ~]# ps -elf F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD 4 S root 1 0 0 80 0 - 31997 ep_pol 10:34 ? 00:00:01 /usr/lib/systemd/systemd 1 S root 2 0 0 80 0 - 0 kthrea 10:34 ? 00:00:00 [kthreadd] 1 S root 3 2 0 80 0 - 0 smpboo 10:34 ? 00:00:00 [ksoftirqd/0] 1 S root 5 2 0 60 -20 - 0 worker 10:34 ? 00:00:00 [kworker/0:0H] 1 S root 6 2 0 80 0 - 0 worker 10:34 ? 00:00:00 [kworker/u256:0] 1 S root 7 2 0 -40 - - 0 smpboo 10:34 ? 00:00:00 [migration/0] 1 S root 8 2 0 80 0 - 0 rcu_gp 10:34 ? 00:00:00 [rcu_bh]PPID:表示對(duì)應(yīng)進(jìn)程的父進(jìn)程的PID號(hào)
PRI:用戶態(tài)優(yōu)先級(jí)(人為)
NI: nice值,內(nèi)核態(tài)優(yōu)先級(jí),取值范圍(-20~19),值越小,優(yōu)先級(jí)越高
ADDR:若是 - ,代表正在運(yùn)行
SZ:在swap交換分區(qū)的容量
WCHAN:當(dāng)前進(jìn)程在內(nèi)核中的名稱
STIME:啟動(dòng)時(shí)間
運(yùn)用grep命令過濾bash進(jìn)程
[root@localhost ~]# ps aux |grep bash root 10189 0.0 0.0 115440 2128 tty1 Ss+ 10:37 0:00 -bash root 18440 0.0 0.0 115440 2024 pts/0 Ss+ 13:26 0:00 -bash root 18669 0.0 0.0 115440 2084 pts/1 Ss 14:06 0:00 -bash root 18722 0.0 0.0 112724 988 pts/1 S+ 14:24 0:00 grep --color=auto bash查看top命令
-
使用ps命令查看到的是一個(gè)靜態(tài)的進(jìn)程信息,并不能連續(xù)的反饋出當(dāng)前進(jìn)程的運(yùn)行狀態(tài)
-
top命令將會(huì)在當(dāng)前終端以全屏交互式的界面顯示進(jìn)程排名,及時(shí)跟蹤包括CPU,內(nèi)存等系統(tǒng)資源占用情況
-
最上面可以看見CPU占用率最高的進(jìn)程
-
作用類似于Windows系統(tǒng)中的任務(wù)管理器
-
默認(rèn)情況下每三秒刷新一次
作用類似于Windows系統(tǒng)中的任務(wù)管理器
TASKS:系統(tǒng)任務(wù),總進(jìn)程數(shù);running,正在運(yùn)行的進(jìn)程數(shù);sleeping。休眠的進(jìn)程數(shù);stopped,中止的進(jìn)程數(shù);zombie,僵死無響應(yīng)的進(jìn)程數(shù)
MEM:內(nèi)存大小,total,總內(nèi)存空間;used,已用內(nèi)存空間;free,空閑內(nèi)存空間;buffers,緩存區(qū)域
CPU:以CPU占用排序,s,用戶占用;sy,內(nèi)核占用;ni,優(yōu)先級(jí)調(diào)度占用;id,空閑CPU;wa,I/O等待占用;hi,硬件中斷占用;si,軟件中斷占用;st,虛擬化占用。要了解空閑的CPU百分比,主要是看%id部分
交換空間(Swap)占用:total,總交換空間;used,已用交換空間;free,空閑交換空間;cached,緩存空間
q:退出
ctrl+C 終止進(jìn)程
ctrl+Z 掛起進(jìn)程
pgrep命令–查看進(jìn)程信息
-
根據(jù)進(jìn)程的名稱、運(yùn)行該進(jìn)程的用戶、進(jìn)程所在的終端等多種屬性查詢特定進(jìn)程的PID 號(hào)
-
通過pgrep命令可以指定進(jìn)程的一部分名稱進(jìn)行查詢,
-l 選項(xiàng)可以同時(shí)輸出對(duì)應(yīng)的進(jìn)程名
-U 查詢特定用戶的進(jìn)程
-t 選項(xiàng)查詢?cè)谔囟ńK端運(yùn)行的進(jìn)程
pgrep:查看ps命令某個(gè)進(jìn)程PLD的信息查詢進(jìn)程名稱,運(yùn)行進(jìn)程用戶
查詢由用戶 teacher 在 tty2 終端上運(yùn)行的進(jìn)程及 PID 號(hào)
[root@localhost ~]# pgrep -l -U root -t tty1 10189 bash tty=0 遠(yuǎn)程終端登錄 tty=1 本地終端登錄 結(jié)合“-U”選項(xiàng)查詢特定用戶的進(jìn)程 “-t”選項(xiàng)查詢?cè)谔囟ńK端運(yùn)行的進(jìn)程pstree命令–查看進(jìn)程樹
pstree命令以屬性結(jié)構(gòu)列出進(jìn)程信息,可以更直觀的判斷各進(jìn)程的相互關(guān)系(父,子進(jìn)程)
pstree命令默認(rèn)情況下只顯示各進(jìn)程的名稱
“-p”選項(xiàng),列出對(duì)應(yīng)的PID號(hào)
“-u”選項(xiàng),列出對(duì)應(yīng)的用戶名
“-a”選項(xiàng),列出完整的命令信息
pstree命令默認(rèn)情況下只顯示各進(jìn)程的名稱
結(jié)合 “-p”選項(xiàng),列出對(duì)應(yīng)的PID號(hào)
結(jié)合 “-u”選項(xiàng),列出對(duì)應(yīng)的用戶名
結(jié)合 “-a”選項(xiàng),列出完整的命令信息
[root@localhost ~]# pstree -aup systemd,1 --switched-root --system --deserialize 22├─NetworkManager,9084 --no-daemon│ ├─dhclient,18543 -d -q -sf /usr/libexec/nm-dhcp-helper -pf /var/run/dhclient-ens33.pid -lf...│ ├─{NetworkManager},9092│ └─{NetworkManager},9095├─VGAuthService,8788 -s├─auditd,8640│ └─{auditd},8642├─chronyd,8804,chrony├─crond,8877 -n├─dbus-daemon,8792,dbus --system --address=systemd: --nofork --nopidfile --systemd-activation│ └─{dbus-daemon},8834├─firewalld,8908 -Es /usr/sbin/firewalld --nofork --nopid│ └─{firewalld},9378├─login,10184 │ └─bash,10189├─lvmetad,4379 -f├─master,9958 -w│ ├─pickup,18589,postfix -l -t unix -u│ └─qmgr,9964,postfix -l -t unix -u├─polkitd,8779,polkitd --no-debug│ ├─{polkitd},8830│ ├─{polkitd},8839│ ├─{polkitd},8843│ ├─{polkitd},8846│ ├─{polkitd},8848│ └─{polkitd},8867├─rsyslogd,9666 -n│ ├─{rsyslogd},9669│ └─{rsyslogd},9671├─sshd,9662 -D│ ├─sshd,18436 │ │ └─bash,18440│ └─sshd,18665 │ └─bash,18669│ └─pstree,18843 -aup├─systemd-journal,4362├─systemd-logind,8840├─systemd-udevd,4392├─tuned,9664 -Es /usr/sbin/tuned -l -P│ ├─{tuned},10063│ ├─{tuned},10064│ ├─{tuned},10065│ └─{tuned},10079└─vmtoolsd,8789└─{vmtoolsd},8942控制進(jìn)程(進(jìn)程的啟動(dòng),調(diào)節(jié),終止)
啟動(dòng)進(jìn)程的方式
手動(dòng)啟動(dòng)
? 前臺(tái)啟動(dòng):用戶輸入命令,直接執(zhí)行程序
? 后臺(tái)啟動(dòng):在命令行尾加入&符號(hào)
[root@localhost ~]# cp /dev/cdrom mycd.iso& //在后臺(tái)運(yùn)行復(fù)制鏡像文件進(jìn)程 [1] 18877 //pld號(hào)調(diào)度啟動(dòng)進(jìn)程
-
有些任務(wù)非常費(fèi)時(shí),適合在相對(duì)空閑的時(shí)間進(jìn)行,我們便可以使用調(diào)度安排啟動(dòng)
-
at命令,設(shè)置一次性計(jì)劃任務(wù)(如 1:55重啟網(wǎng)絡(luò)服務(wù))
-
crontab,命令,設(shè)置周期性計(jì)劃任務(wù)(如 每周六15:00 備份數(shù)據(jù)庫(kù))
改變進(jìn)程的運(yùn)行方式
掛起當(dāng)前進(jìn)程 Ctrl+Z 組合鍵
將當(dāng)前進(jìn)程掛起,即調(diào)入后臺(tái)并停止執(zhí)行(對(duì)于速度緩慢,會(huì)耽誤其他操作的進(jìn)程使用)
查看后臺(tái)進(jìn)程 jobs 命令
查看處于后臺(tái)的任務(wù)列表。
結(jié)合**“-l**”選項(xiàng)可以同時(shí)顯示出該進(jìn)程對(duì)應(yīng)的PID號(hào)
輸出結(jié)果中,每一行記錄對(duì)應(yīng)一個(gè)后臺(tái)進(jìn)程的狀態(tài)信息,行首的數(shù)字代表該進(jìn)程在后臺(tái)的任務(wù)編號(hào)。
若當(dāng)前終端沒有后臺(tái)進(jìn)程,將不會(huì)顯示任何信息
將后臺(tái)的進(jìn)程恢復(fù)運(yùn)行 fg 命令
將后臺(tái)進(jìn)程恢復(fù)到前臺(tái)運(yùn)行,可以指定任務(wù)序號(hào)
bg(BackGround)命令可以將后臺(tái)中暫停執(zhí)行的任務(wù)恢復(fù)運(yùn)行,繼續(xù)在后臺(tái)執(zhí)行操作
fg(ForeGround)命令可以將后臺(tái)任務(wù)恢復(fù)到前臺(tái)運(yùn)行
除非后臺(tái)任務(wù)只有一個(gè),否則bg和fg命令都需要指定后臺(tái)進(jìn)程的任務(wù)編號(hào)作為參數(shù)
終止進(jìn)程執(zhí)行平常可以使用Ctrl + C組合鍵強(qiáng)制中斷
Ctrl + C組合鍵無法中止后,可以使用專門fg的進(jìn)程中止工具 kill,killall,pkill
把創(chuàng)建vim1.2,停止他并看出進(jìn)程
[root@localhost 桌面]# vim 1.txt
[4]+ Stopped vim 1.txvit
[root@localhost 桌面]# vim 2.txt
[5]+ Stopped vim 2.txtjo
[root@localhost ~]# jobs -l [1]- 19117 停止 vim 2.txt [2]+ 19118 停止 vim 1.txt使用kill命令終止進(jìn)程
-
kill命令需要使用進(jìn)程的PID號(hào)作為參數(shù)
-
若進(jìn)程無法響應(yīng),可結(jié)合“-9”選項(xiàng)強(qiáng)行中止進(jìn)程。強(qiáng)行中止進(jìn)程可能會(huì)到時(shí)部分?jǐn)?shù)據(jù)丟失,謹(jǐn)慎使用
使用killall命令終止進(jìn)程
killall命令通過進(jìn)程名來中止進(jìn)程,可終止指定名稱所有進(jìn)程(可理解為終止進(jìn)程樹)
killall命令同樣有“-9”選項(xiàng),強(qiáng)制終止進(jìn)程
pgrep 查看tom運(yùn)行的進(jìn)程
[tom@localhost root]$ pgrep -l -u 'tom' 19263 bashpkill 強(qiáng)行終止tom運(yùn)行的進(jìn)程
根據(jù)特定條件終止相應(yīng)的進(jìn)程
常用命令選項(xiàng):
-U:根據(jù)進(jìn)程所屬的用戶名終止相應(yīng)的進(jìn)程
-t:根據(jù)進(jìn)程所在的終端終止相應(yīng)的進(jìn)程
pgrep -l -U “tom” 在查看tom運(yùn)行的進(jìn)程( 定點(diǎn)殺死)
pkill -9 -U “tom” 與 kill -9 有什么不同的地方(殺死所有)
任務(wù)計(jì)劃
at一次性任務(wù)
基本格式
at [HH:MM] [yyyy-mm-dd] ‘//at 時(shí):分 年-月-日’
atq 命令,查看待執(zhí)行任務(wù)的列表
atrm 命令,刪除指定編號(hào)的at任務(wù)
root@localhost opt]# date 2017年 11月 18日 星期六 00:15:24 CST [root@localhost ~]# at 15:26 2020-07-01 [root@localhost opt]# atq 4 2017-11-18 00:16 a root 問題1:出現(xiàn)這個(gè)問題 Can't open /var/run/atd.pid to signal atd. No atd running? 解決 systemctl start atd.service 開啟一下atd服務(wù)atq 命令,查看待執(zhí)行任務(wù)的列表
對(duì)于已經(jīng)設(shè)置,但并未執(zhí)行的任務(wù),可通過atq命令查看。(已經(jīng)執(zhí)行的任務(wù)不會(huì)出現(xiàn))
atq查看的任務(wù)列表,每個(gè)任務(wù)的序號(hào)不會(huì)變動(dòng),即便1-5個(gè)序號(hào)任務(wù)已經(jīng)執(zhí)行完畢,顯示出的第六個(gè)未執(zhí)行任務(wù)的序號(hào)也是6,而不會(huì)變成1。
crontab周期性任務(wù)設(shè)置
由cronie,crontab工具
/etc/crontab 系統(tǒng)任務(wù)配置文件
crontab(定時(shí)任務(wù))
使用crontab命令設(shè)置的計(jì)劃任務(wù)可以按預(yù)設(shè)的周期重復(fù)執(zhí)行,可以大大減輕重復(fù)性系統(tǒng)管理任務(wù)的操作
軟件包c(diǎn)ronie 提供crontab工具,系統(tǒng)服務(wù)crond和配置文件 /etc/crontab。
開啟系統(tǒng)服務(wù)crond 是啟動(dòng)周期性任務(wù)的前提條件
/etc/crontab 全局配置文件
全局配置文件
/etc/crontab 文件中設(shè)置的是維護(hù)Linux系統(tǒng)所需的任務(wù)
Linux系統(tǒng)及相關(guān)程序在安裝時(shí)自動(dòng)設(shè)置
不建議用戶手動(dòng)修改此文件
at /etc/crontab #### 計(jì)劃任務(wù)配置文件 SHELL=/bin/bash '//設(shè)置執(zhí)行計(jì)劃任務(wù)的Shell環(huán)境' PATH=/sbin:/bin:/usr/sbin:/usr/bin '//定義可執(zhí)行命令及程序的路徑' MAILTO=root '//執(zhí)行計(jì)劃任務(wù)時(shí)使用的主目錄'# For details see man 4 crontabs# Example of job definition: # .---------------- minute (0 - 59) '//分鐘范圍:0-59' # | .------------- hour (0 - 23) '//小時(shí)范圍:0-23' # | | .---------- day of month (1 - 31) '//一個(gè)月的天數(shù)范圍:1-31' # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... '//月數(shù)范圍:1-12' # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat '//一周的天數(shù)范圍: 0-6(周日用0或者7表示)' # | | | | | # | | | | | # * * * * * user-name command to be executed分 時(shí) 日 月 天 [root@localhost opt]# systemctl status crond.service ####查看計(jì)劃任務(wù)程序的狀態(tài) centos 7.0以上版本 [root@localhost opt]# systemctl start crond.service ####啟動(dòng)計(jì)劃任務(wù)程序 centos 7.0以上版本 [root@localhost opt]# systemctl stop crond.service ####停止計(jì)劃任務(wù)程序 centos 7.0以上版本]()service crond start ####計(jì)劃任務(wù)功能要開啟 ###centos 7.0以下版本crontab -e ####添加計(jì)劃任務(wù)40 0 * * * /bin/cp /opt/1.txt /mnt ####這邊命令必須是絕對(duì)路徑 [root@localhost ~]# ls /opt/ 1.txt ps.txt [root@localhost ~]# ls /mnt 1.txt [root@localhost opt]# crontab -r ###清空 [root@localhost opt]# crontab -l ###查看下1.2 /etc/cron.*/ 系統(tǒng)默認(rèn)設(shè)置
系統(tǒng)默認(rèn)設(shè)置cron任務(wù)的配置文件存放目錄
軟件包c(diǎn)rontabs安裝后,會(huì)在/etc/cron.*/目錄下生成存放一些系統(tǒng)默認(rèn)設(shè)置的計(jì)劃任務(wù)目錄,設(shè)置了系統(tǒng)每個(gè)小時(shí),每一天做些什么任務(wù)
例如: /etc/cron.hourly/ 目錄下存放的是系統(tǒng)每小時(shí)要做的任務(wù)可執(zhí)行腳本 /etc/cron.daily/ 目錄下存放的是系統(tǒng)每天要做的任務(wù)可執(zhí)行腳本 /etc/cron.weekly/ 目錄下存放的是系統(tǒng)每周要做的任務(wù)可執(zhí)行腳本 /etc/cron.monthly/ 目錄下存放的是系統(tǒng)每月要做的任務(wù)可執(zhí)行腳本 這些是可執(zhí)行腳本,不是cron配置文件,crond服務(wù)通過run-parts 工具調(diào)用執(zhí)行這些腳本使用crontab命令管理用戶的計(jì)劃任務(wù)
常用選項(xiàng)-e 編輯計(jì)劃任務(wù) e:edit,編輯,使用方式同Vim編輯器。'-l 查看計(jì)劃任務(wù) l:list,列表'-r 刪除計(jì)劃任務(wù) r:remove,移除'-u 指定管理計(jì)劃屬于哪個(gè)用戶-l 查看當(dāng)前用戶的計(jì)劃列表'命令格式:時(shí)間周期設(shè)置+任務(wù)內(nèi)容設(shè)置
| 分鐘 | 取值為0到59之間的任意整數(shù) |
| 小時(shí) | 取值為0到23之間的任意整數(shù) |
| 日期 | 取值為1到31之間的任意整數(shù) |
| 月份 | 取值為1到12之間的任意整數(shù) |
| 星期 | 取值為0到7之間的任意整數(shù),0或7代表星期日 |
| 命令 | 要執(zhí)行的命令或程序腳本 |
總結(jié)
以上是生活随笔為你收集整理的程序和计划任务管理( 查看进程ps,控制进程,终止命令进程,top命令,at一次性任务,crontab周期任务)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内存革新!955支持内存,性能稳定又强劲
- 下一篇: 服务器配置磁盘阵列