Linux--進程和計劃任務管理(程序,進程,線程之間關係,靜態與動態查看進程方式,控制進程的方式,計劃任務管理,crontab週期性任務設置,實例)
前言
瞭解了Linux系統的引導過程,以及如何控制系統服務、優化系統服務。若要詳細瞭解系統中運行的各種程序信息、關閉失去響應的進程,以及在指定的時間自動執行任務,應該如何操作呢?
一:程序,進程,線程之間的關係
1.1:進程概述
- 進程(Process)是指計算機中已運行的程序,是系統進行資源分配和調度的基本單位,是操作系統結構的基礎。在早期面向進程設計的計算機結構中,進程是程序的基本執行實體;在當代面向線程設計的計算機結構中,進程是線程的容器。進程是程序真正運行的實例,若干進程可能與同一個程序相關,且每個進程皆可以同步或異步的方式獨立運行
1.2:程序概述
- 程序是保存在外部存儲介質(如硬盤、光盤)中的可執行機器代碼和數據的靜態集合。
1.3:應用程序,進程和線程的關係
名稱 | 關係 |
---|---|
應用程序 | 一個應用程序可以包含一個或者多個進程 |
進程 | 一個進程包含一個或多個線程 |
線程 | 線程是執行操作的最小單元 |
- 舉例:以一個工廠結構舉例
應用程序=工廠
進程=車間
線程=工人
高併發處理==>依賴於多線程操作
1.4:程序和進程的關係
- 程序
保存在硬盤,光盤等介質中的可執行代碼和數據
靜態保存的代碼
- 進程
在CPU及內存中運行的程序代碼
動態執行的代碼
父.子進程:每個進程可以創建一個或多個進程,是一個依賴關係。
1.5:進程和線程的關係
-
進程和線程都是由操作系統的程序運行的基本單元,系統利用該基本單元實現系統對應用的併發性
-
一個程序至少有一個進程,一個進程至少有一個線程
線程的劃分尺度小於進程,所以多線程程序的併發性高
-
進程在執行過程中擁有獨立的內存單元,而多個線程共享內存,從而極大的提高了程序的運行效率
-
線程在執行過程中與進程存在區別
每個獨立的線程有一個程序運行的入口,順序執行序列和程序的出口
但是線程不能夠獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制。
從邏輯角度來看,多線程的意義在於一個應用程序中,有多個執行部分可以同時執行
但操作系統並沒有將多個線程看做多個獨立的應用,來實現進程的調度和管理以及資源分配
這就是進程和線程的重要區別
-
進程是具有一定獨立功能的程序關於某個數據集合上的一次運行活動,進程是系統進行資源分配和調度的一個獨立單位
-
線程是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位,線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧)但是它可以與同屬一個進程的其他線程共享進程所擁有的全部資源
-
一個線程可以創建和撤銷另一個線程
同一個進程中的多個線程之間可以併發執行
二:查看進程
瞭解系統中進程的狀態是對進程進行管理的前提,使用不同的命令工具可以從不通的角度查看進程狀態。
2.1:ps命令—查看靜態的進程統計信息(Processes Statistic)
- ps命令是Linux系統中最爲常用的進程查看工具,主要用於顯示包含當前運行的各進程完整信息的靜態快照
ps命令基本格式
ps [選項] 注意:有一些選項時不帶“-”前綴的(添加“-”前綴後含義可能會有出入)
a 顯示當前終端下的所有進程信息,包括其他用戶的進程、與“x”選項結合時將顯示系統中所有的進程信息
u 使用以用戶爲主的格式輸出進程信息
x 顯示當前用戶在所有終端下的進程信息
-e 顯示系統內的所有進程信息
-l 使用長(Long)格式顯示進程信息
-f 使用完整的(Full)格式顯示進程信息
ps aux命令 以簡單列表的形式顯示出進程信息
[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.2 0.3 193700 6836 ? Ss 22:38 0:01 /usr/lib/systemd/syst
root 2 0.0 0.0 0 0 ? S 22:38 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 22:38 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S 22:38 0:00 [kworker/0:0]
root 5 0.0 0.0 0 0 ? S< 22:38 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S 22:38 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 22:38 0:00 [rcu_bh]
..以下省略部分內容
ps -elf 命令:以長格式顯示系統中的進程信息
[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 - 32041 ep_pol 23:04 ? 00:00:00 /usr/l
1 S root 2 0 0 80 0 - 0 kthrea 23:04 ? 00:00:00 [kthre
1 S root 3 2 0 80 0 - 0 smpboo 23:04 ? 00:00:00 [ksoft
1 S root 4 2 0 80 0 - 0 worker 23:04 ? 00:00:00 [kwork
1 S root 5 2 0 60 -20 - 0 worker 23:04 ? 00:00:00 [kwork
1 S root 6 2 0 80 0 - 0 worker 23:04 ? 00:00:00 [kwork
1 S root 7 2 0 -40 - - 0 smpboo 23:04 ? 00:00:00 [migra
1 S root 8 2 0 80 0 - 0 rcu_gp 23:04 ? 00:00:00 [rcu_b
1 R root 9 2 0 80 0 - 0 - 23:04 ? 00:00:00 [rcu_s
..此處省略部分信息
PPID:表示對應進程的父進程的PID號
PRI:用戶態優先級(人爲)
NI: nice值,內核態優先級,取值範圍(-20~19),值越小,優先級越高
ADDR:若是 - ,代表正在運行
SZ:在swap交換分區的容量
WCHAN:當前進程在內核中的名稱
STIME:啓動時間
-
ps aux | grep "bash"命令 - 由於系統中運行的進程數量較多,需要查詢某一個進程的信息時可以結合管道操作和grep命令進行過濾。 - 此命令可以過濾出包含“bash”的進程信息 - [root@localhost ~]# ps aux | grep "bash" root 655 0.0 0.0 115256 924 ? S 23:04 0:00 /bin/bash /usr/sbin/ksmtuned root 1791 0.0 0.0 51332 580 ? Ss 23:05 0:00 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "env GNOME_SHELL_SESSION_MODE=classic gnome-session --session gnome-classic" root 2422 0.0 0.1 116300 2864 pts/0 Ss+ 23:05 0:00 bash root 2482 0.0 0.1 116044 2776 pts/1 Ss 23:06 0:00 -bash root 2536 0.0 0.0 112680 984 pts/1 S+ 23:07 0:00 grep --color=auto bash
-
執行不帶任何選項的ps命令時,將只顯示當前用戶會話中打開的進程
[root@localhost ~]# ps
PID TTY TIME CMD
2711 pts/0 00:00:00 bash
2946 pts/0 00:00:00 ps
-
上述輸出信息中,每一列稱爲字段或者列或者屬性
-
上述輸出信息中,第一行爲列表標題,其中個字段的含義如下
USER: 啓動該進程的用戶賬號信息
PID: 該進程在系統中的數字ID號,在當前系統中是唯一的
%CPU:CPU佔用的百分比
%MEN:內存佔用的百分比
VSZ:佔用虛擬內存(SWAP)的大小
RSS:佔用常駐內存(物理內存)的大小
TTY: 表明該進程在哪個終端上運行。“?”表示未知或者不需要終端
SATA: 顯示了進程當前的狀態,如S(休眠),R(運行),Z(僵死),<(高優先級),N(低優先級),s(父進程),+(前臺進程),l(多線性進程),D(不可休眠進程)對處於僵死狀態的進程應該予以手動終止
START: 啓動該進程的時間
TIME: 該進程佔用CPU時間
COMMAND: 啓動該進程的命令的名稱
2.2:top命令—動態查看
-
使用ps命令查看到的是一個靜態的進程信息,並不能連續的反饋出當前進程的運行狀態
-
top命令將會在當前終端以全屏交互式的界面顯示進程排名,及時跟蹤包括CPU,內存等系統資源佔用情況
默認情況下每三秒刷新一次
作用類似於Windows系統中的任務管理器
2.2.1:top 命令
top - 23:17:10 up 12 min, 3 users, load average: 0.00, 0.04, 0.06
Tasks: 185 total, 1 running, 184 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni, 99.7 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1867024 total, 670880 free, 669584 used, 526560 buff/cache
KiB Swap: 4194300 total, 4194300 free, 0 used. 986308 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1833 root 20 0 1624108 168500 51624 S 0.0 9.0 0:02.26 gnome-shell
1983 root 20 0 1100816 63532 20704 S 0.0 3.4 0:00.10 evolution-cal+
2083 root 20 0 1202856 59344 19216 S 0.0 3.2 0:00.08 evolution-cal+
2040 root 20 0 1040248 59132 19108 S 0.0 3.2 0:00.06 evolution-cal+
1994 root 20 0 884268 32724 14160 S 0.0 1.8 0:00.31 gnome-software
1392 root 20 0 288368 30804 10276 S 0.0 1.6 0:00.40 X
1965 root 20 0 1026108 30296 18916 S 0.0 1.6 0:00.20 nautilus-desk+
- 操作選項
M:以內存大小排序
c:以CPU佔用排序
h:top程序在線幫助信息
q:退出
- 上述輸出信息中,開頭的部分顯示了系統任務(Tasks),CPU佔用,內存佔用(Mem),交換空間(Swap)等彙總信息,彙總信息下方依次顯示當前進程的排名情況。相關信息含義如下
1.系統任務(Tasks)信息:total,總進程數;running,正在運行的進程數;sleeping。休眠的進程數;stopped,中止的進程數;zombie,僵死無響應的進程數
2.CUP佔用信息:us,用戶佔用;sy,內核佔用;ni,優先級調度佔用;id,空閒CPU;wa,I/O等待佔用;hi,硬件中斷佔用;si,軟件中斷佔用;st,虛擬化佔用。要了解空閒的CPU百分比,主要是看%id部分
3.內存佔用(Mem)信息:total,總內存空間;used,已用內存空間;free,空閒內存空間;buffers,緩存區域
4.交換空間(Swap)佔用:total,總交換空間;used,已用交換空間;free,空閒交換空間;cached,緩存空間
2.3:pgrep 和 pstree—查看進程信息
2.3.1:pgrep命令
當使用ps命令查詢某個進程的PID信息時,往往需要結合grep命令對輸出結果進行過濾,很不方便
pgrep命令正是用來查詢特定進程信息的專用工具
pgrep命令可以根據進程的名稱,運行該進程的用戶,進程所在的終端等多重屬性查詢特定進程的PID號
通過pgrep命令可以指定進程的一部分名稱進行查詢,結合“-l"選項可以同時輸出對應的進程名
- “-l”選項顯示進程名
[root@localhost ~]# pgrep -l "log" '//查詢進程名中包含“log”的進程及其PID號'
282 xfs-log/sda2
444 xfs-log/sda5
445 xfs-log/sda1
555 systemd-logind
561 abrt-watch-log
580 abrt-watch-log
597 rsyslogd
640 mcelog
-
結合“-U”選項查詢特定用戶的進程
-
“-t”選項查詢在特定終端運行的進程
tty=0 遠程終端登錄
tty=1 本地終端登錄[root@localhost ~]# pgrep -l -U lisi tty 1 '//查詢在1終端的lisi 用戶的進程' 27483 bash 27584 vim
2.3.2:pstree命令
-
pstree命令以屬性結構列出進程信息,可以更直觀的判斷各進程的相互關係(父,子進程)
-
pstree命令默認情況下只顯示各進程的名稱
“-p”選項,列出對應的PID號
“-u”選項,列出對應的用戶名
“-a”選項,列出完整的命令信息
[root@localhost ~]# pstree -aup '//查看當前系統的進程樹(包括各進程對應的PID號,用戶名,完整命令等信息)'
systemd,1 --switched-root --system --deserialize 21
├─ModemManager,601
│ ├─{ModemManager},631
│ └─{ModemManager},635
├─NetworkManager,667 --no-daemon
│ ├─dhclient,791 -d -q -sf /usr/libexec/nm-dhcp-helper -pf...
│ ├─{NetworkManager},676
│ └─{NetworkManager},678
..省略部分信息
[root@localhost ~]# pstree -ap lisi '//查看用戶lisi打開的進程及子進程的樹結構'
三:控制進程
3.1:啓動進程
在linux系統中。可以由用戶手工啓動或者按預定計劃調度啓動新的進程。
3.1.1:手工啓動進程
- 進程在前臺運行時,用戶必須等到該進程執行結束並退出後才能繼續輸入其他命令。運行耗時較長的操作可進入後臺運行,進程在後臺運行時,用戶可以繼續在當前終端輸入其他命令,無需等待該進程結束。
- 前臺啓動:用戶輸入命令,直接執行程序
- 後臺啓動:在命令末尾加入“&”符號
[root@localhost ~]# cp /dev/cdrom mycd.iso& '//在後臺運行復制鏡像文件進程'
[1] 3227 '//輸出信息中心包括後臺任務序號,PID號'
3.1.2:調度啓動進程
在服務器維護工作中,經常需要執行一些比較費時而 且較佔用資源的任務(如數據備份),這些任務更適合在相對空閒的時候(如夜間)進行。這時就需要用戶事先進行調度安持,指定任務運行的時間,當系統到達設定時間時會自動啓動並完成指定的任務。調度啓動的計劃任務進程均在後臺運行,不會佔用用戶的命令終端。
進程的調度啓動可以通過at、crontab 命令進行設置,其中at命令用於設置一次性(如12-15時重啓網絡服務)計劃任務,crontab 用於設置週期性運行(如每週五17:30備份數據庫)的計劃任務。
3.2:改變進程的運行方式
3.2.1:掛起當前進程 Ctrl+Z 組合鍵
- 在Linux系統中的命令正在前臺執行時(運行尚未結束),按Ctrl+Z組合鍵可以將當前進程掛起(調入後臺並停止執行),這種操作在需要暫停當前進程並進行其他操作是特別有用。
3.2.2:查看後臺進程 jobs 命令
- 查看處於後臺的任務列表。
- 結合“-l”選項可以同時顯示出該進程對應的PID號
- 輸出結果中,每一行記錄對應一個後臺進程的狀態信息,行首的數字代表該進程在後臺的任務編號。
- 若當前終端沒有後臺進程,將不會顯示任何信息
命令格式
[root@localhost ~]# jobs-I
[1]+ 28584停止wget f://7/.7.17.13/1irefox-1atest.tar.z2l
3.2.3:將後臺的進程恢復運行 fg 命令
- 將後臺進程恢復到前臺運行,可以指定任務序號
- bg(BackGround)命令可以將後臺中暫停執行的任務恢復運行,繼續在後臺執行操作
- fg(ForeGround)命令可以將後臺任務恢復到前臺運行
- 除非後臺任務只有一個,否則bg和fg命令都需要指定後臺進程的任務編號作爲參數
3.3:終止進程執行
-
在用戶在前臺執行某個程序時,可以按Ctrl+C組合鍵強制進行中斷(如命令長時間沒有響應的情況下)。
-
中斷前臺進程的運行後,系統將返回到命令行提示符狀態等待用戶輸入新的命令。
-
Ctrl + C組合鍵無法中止後,可以使用專門的進程中止工具 kill,killall,pkill
3.3.1:使用kill命令終止進程
- kill命令需要使用進程的PID號作爲參數
- 若進程無法響應,可結合“-9”選項強行中止進程。強行中止進程可能會到時部分數據丟失,謹慎使用
3.3.2:使用killall命令終止進程
- killall命令通過進程名來中止進程,可終止指定名稱所有進程(可理解爲終止進程樹)
- killall命令同樣有“-9”選項,強制終止進程
3.3.3:使用pkill命令終止進程
-
根據特定條件終止相應的進程
-
常用命令選項:
-U:根據進程所屬的用戶名終止相應的進程
-t:根據進程所在的終端終止相應的進程
pgrep -l -U "tom" ###查看tom運行的進程
pkill -9 -U "tom" ###強行終止tom運行的進程
pgrep -l -U "tom" ###在查看tom運行的進程
四:計劃任務管理
- CentOS7系統中的計劃任務是由at,cronie軟件包提供,通過atd和crond這兩個系統服務實現一次性,週期性的計劃任務功能,並分別通過at,crontab命令進行計劃任務設置
- 開啓系統服務atd是at命令設置的計劃任務的前提條件
4.1:at一次性任務設置
- 使用at命令設置的計劃任務只在指定的時間點執行一次, 前提是對應的系統服務
atd必須已經運行。需要注意的是,計劃執行任務的時間、日期必須安排在當前系統的
時刻之後,否則將無法正確設置計劃任務。 - 設置一次性計劃任務時,在at命令行中依次指定計劃執行任務的時間、日期作爲
參數(若只指定時間則表示當天的該時間,若只指定日期則表示該日期的當前時間),
確認後將進入帶“at>”提示符的任務編輯界面,每行設置一條執行命令,可以依次設
置多條語句,最後按Ctrl+D組合鍵提交任務即可。所設置的命令操作將在計劃的時間
點被依次執行。 - 例如,以下操作先通過date命令確認當前的系統時間,並設置在2016年5月5日的14:55分自動執行以下任務:統計該時間點系統中由root用戶運行的進程的數量,並將該數值保存到“/tmp/ps.root” 文件中。
[root@kgc ~]# date
2016年05月05日星期四14:45:05 CST
[root@kgc ~]# at 14:55 2016-05-05
at> pgrep -U root |wc -1> /tmp/ps.root
at><EOT> //任務設置完畢後按Ctrl+D組合鍵提交
job 1 at 2016-05-05 14:55
[root@kgc ~]# cat /tmp/ps.rot //等過了計劃時間後驗證命令結果
63
4.2:at命令使用順序
- 查看時間–>設置時間–>輸入命令–>Ctrl + D提交任務
- date:查看當前時間。設置任務,時間不可在當前時間之前
- 命令輸入完成後按 Ctrl + D組合鍵提交任務即可
[root@localhost ~]# date '//查看當前時間'
2019年 11月 13日 星期三 00:45:58 CST
[root@localhost ~]# at 00:48 2019-11-13 '//設置任務執行時間'
at> pgrep -U root |wc -l > /tmp/ps.root '//輸入命令(統計該時間點系統中由root用戶運行的進程數量,並將數值保存到/tmp/ps.root文件中)'
at> <EOT> '//按Ctrl + D組合鍵提交任務'
job 1 at Wed Nov 13 00:48:00 2019
[root@localhost ~]# cat /tmp/ps.root '//查看任務完成情況'
175
4.3:atq 命令—查看待執行任務的列表
- 對於已經設置,但並未執行的任務,可通過atq命令查看。(已經執行的任務不會出現)
- atq查看的任務列表,每個任務的序號不會變動,即便1-5個序號任務已經執行完畢,顯示出的第六個未執行任務的序號也是6,而不會變成1。
[root@localhost opt]# atq
4 2017-11-18 00:16 a root
4.4:atrm 命令,刪除指定編號的at任務
- atrm命令用來刪除指定編號的at任務,編號可以通過atq查看。
- 刪除後的at任務不會出現在atq顯示結果中。
[root@localhost opt]# atrm2 //刪除第2條at計劃任務
[root@localhost opt]# atq //確認第2條任務已被刪除
五:crontab週期性任務設置
- crontab(定時任務)
- 使用crontab命令設置的計劃任務可以按預設的週期重複執行,可以大大減輕重複性系統管理任務的操作
- 軟件包cronie 提供crontab工具,系統服務crond和配置文件 /etc/crontab。
- 開啓系統服務crond 是啓動週期性任務的前提條件
5.1:crontab的配置文件和目錄
- crond通過多個目錄和文件設置計劃任務,不同類型的任務由不同的配置文件來配置
5.1.1:/etc/crontab 全局配置文件
- /etc/crontab 文件中設置的是維護Linux系統所需的任務,由Linux系統及相關程序在安裝時自動設置,不建議用戶手動修改此文件
[root@localhost ~]# cat /etc/crontab '//查看系統任務配置文件'
SHELL=/bin/bash '//設置執行計劃任務的Shell環境'
PATH=/sbin:/bin:/usr/sbin:/usr/bin '//定義可執行命令及程序的路徑'
MAILTO=root '//將任務輸出信息發送到指定用戶的郵箱'
HOME=/ '//執行計劃任務時使用的主目錄'
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59) '//分鐘範圍:0-59'
# | .------------- hour (0 - 23) '//小時範圍:0-23'
# | | .---------- day of month (1 - 31) '//一個月的天數範圍:1-31'
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ... '//月數範圍:1-12'
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat '//一週的天數範圍: 0-6(週日用0或者7表示)'
# | | | | |
# * * * * * user-name command to be executed
根據“/etc/crontab”配置文件中的設定,crond將按照不同的週期重複執行相應目錄中的任務腳本文件。
5.1.2:/etc/cron.*/ —系統默認設置cron任務的配置文件存放目錄
-
系統默認設置cron任務的配置文件存放目錄
-
軟件包crontabs安裝後,會在/etc/cron.*/目錄下生成存放一些系統默認設置的計劃任務目錄,設置了系統每個小時,每一天做些什麼任務
-
例如:
/etc/cron.hourly/ 目錄下存放的是系統每小時要做的任務可執行腳本
/etc/cron.daily/ 目錄下存放的是系統每天要做的任務可執行腳本
/etc/cron.weekly/ 目錄下存放的是系統每週要做的任務可執行腳本
/etc/cron.monthly/ 目錄下存放的是系統每月要做的任務可執行腳本
- 這些是可執行腳本,不是cron配置文件,crond服務通過run-parts 工具調用執行這些腳本
5.1.3:/var/spool/cron/用戶名 用戶定義的位置
-
用戶自行設置的cron計劃任務將被保存到目錄/var/spool/cron/中
-
用戶使用crontab命令創建計劃任務,就會在/var/spool/cron/目錄下生產一個與用戶名相同的文件
-
例如:root用戶的cron計劃任務保存在配置文件/var/spool/cron/root中
[root@kgc ~]# Is -1 /var/spoo/cron/*
-rw------ 1 root root 24 02-21 10:37 /var/spool/cron/root
crond守護進程會自動檢查/etc/crontab文件、/etc/cron.d/ 目錄及/ar/spoo/cron/ 目錄中的改變,如果發現有配置更改,它們就會被載入內存,所以當某個crontab文件改變後並不需要重新啓動crond守護進程就可以使設置生效。
5.2:使用crontab命令管理用戶的計劃任務
常用選項
crontab -e [-u 用戶名] '//編輯計劃任務 e:edit,編輯,使用方式同Vim編輯器。'
crontab -l [-u 用戶名] '//查看計劃任務 l:list,列表'
crontab -r [-u 用戶名] '//刪除計劃任務 r:remove,移除'
crontab -l '//查看當前用戶的計劃列表'
crontab -l -u lisi '//查看lisi用戶的計劃任務'
crontab -e '//可以操作刪除一條計劃任務'
crontab -r '//刪除用戶所有的計劃任務'
-
命令格式: 時間週期設置 + 任務內容設置
-
分時日月周的取值範圍和命令的說明
-
時間數值的特殊表示方法 * 表示該範圍內的任意時間 , 表示間隔的多個不連續的時間點 - 表示一個連續的時間範圍 / 指定間隔的時間頻率 例如: 0 17 * * 1-5 '//表示週一到週五每天17:00' 30 8 * * 1,3,5 '// 表示每週一,三,五的8點30分' 0 8-18/2 * * * '// 表示8點到18點之間每2小時' 0 * */3 * * '//表示每3天'
-
“分鐘”字段應該填寫一個具體的時間數值,不可是“*”,否則將會每一分鐘都執行一次任務
crontab -e ####添加計劃任務
40 0 * * * /bin/cp /opt/1.txt /mnt ####這邊命令必須是絕對路徑
[root@localhost opt]# crontab -r ###清空
[root@localhost opt]# crontab -l ###查看下
- 分時日月周的取值範圍和命令的說明
[外鏈圖片轉存中...(img-Auj8JdDP-1592558396571)]
- ```
時間數值的特殊表示方法
* 表示該範圍內的任意時間
, 表示間隔的多個不連續的時間點
- 表示一個連續的時間範圍
/ 指定間隔的時間頻率
例如:
0 17 * * 1-5 '//表示週一到週五每天17:00'
30 8 * * 1,3,5 '// 表示每週一,三,五的8點30分'
0 8-18/2 * * * '// 表示8點到18點之間每2小時'
0 * */3 * * '//表示每3天'
- “分鐘”字段應該填寫一個具體的時間數值,不可是“*”,否則將會每一分鐘都執行一次任務
六:實例
crontab -e ####添加計劃任務
40 0 * * * /bin/cp /opt/1.txt /mnt ####這邊命令必須是絕對路徑
[root@localhost opt]# crontab -r ###清空
[root@localhost opt]# crontab -l ###查看下
■需求描述
●管理系統中的進程
◆使用kill命令終止postix服務的運行
◆查找系統中CPU佔用率超過80%的進程,並強行終止該進程
◆練習各種進程管理命令的使用
●設置計劃運行的系統管理任務
◆每週- -早.上7:50自動清空FTP服務器"Iar/ftp/pub" 中數據
◆每天晚上的10:30自動執行任務,完成以下操作
…顯示當前的系統時間並查看已掛載磁盤分區的磁盤使用情況
…將輸出結果追加到文件/ar/log/df.log中,持續觀察硬盤空間變化
◆確認所設置的計劃任務列表
確認所設置的計劃任務列表