一、進程概念
內核的功用:進程管理、文件系統、網絡功能、內存管理、驅動程序、 安全功能等
v Process: 運行中的程序的一個副本(文件),是被載入內存的一個指令集合,在內存中運行,系統指定一個內存空間和PID編號;進程ID(Process ID ,PID )號碼被用來標記各個進程;存在生命周期
UID 、GID 、和SELinux 語境決定對文件系統的存取和訪問權限,通常從執行進程的用戶來繼承
task struct :Linux 內核存儲進程信息的數據結構格式(開發相關)
v task list :多個任務的的task struct 組成的鏈表,單個鏈表相當于指針從一個任務傳到下一個任務
v 進程創建:init(CentOS6)systemd(CentOS7) :第一個進程 ;克隆出子進程 ;
進程:都由其父進程創建 ,CoW 寫(修改)時復制;
父進程通過fork()fock函數生成子進程 , clone()克隆 生成一個新的內存空間,子進程就在新的空間修改
1.1 進程優先級
(CPU設定時間片),把進程分運行等級
系統優先級: 數字越小,優先級越高
0-139 (CentOS4,5) 各有140 個運行隊列和等待過期隊列
0-98 ,99 (CentOS6)
實時優先級: 99-0 :值最大優先級最高
nice 值:-20 到19 ,對應系統優先級100-139 或99
v Big O :時間復雜度 ,用時和規模的線性關系 ;通過算法控制
O(1), O(logn), O(n) 線性, O(n^2) 拋物線, O(2^n)
1.2進程內存及相互通訊
Page Frame: 頁框,用于存儲頁面數據,存儲Page 4k
LRU:Least Recently Used 近期最少使用算法, 釋放內存(把進程代碼調到swap,交換分區;這樣內存空間騰出來)
物理地址空間和線性地址(虛擬3G)空間(32位4G內存,1G給系統內核,3G給內存)
MMU :Memory Management Unit(cpu里的硬件,進程管理單元) 負責轉換線性(虛擬內存)和物理地址
v IPC: Inter Process Communication 進程間通訊
同一主機上1、signal(信號)2、shm: shared memory(共享內存)3、semophore 信號量,一種計數器(加鎖,不讓其他進程訪問)
不同主機上:1、rpc: remote procedure call(遠程過程調用)2、socket: IP 和端口號
1.3 進程狀態
v Linux 內核:搶占式多任務
進程類型:
守護進程(windows服務): daemon, 在系統引導過程中啟動的進程,和終端無關進程
前臺進程:跟終端相關,通過終端啟動的進程
注意:兩者可相互轉化,可把前臺進程放到后臺,也能相反。
v 進程狀態:
運行態:running (操作系統上同時運行不會太多) ; 就緒態:ready(進程大部分都是在就緒)
睡眠態:(sleep)可中斷:interruptable(Ctrl +c);(某些下載的時候)不可中斷:uninterruptable
停止態:(vim)stopped, 暫停于內存中,但不會被調度,除非手動啟動
僵死態:zombie ,結束進程,父進程結束前,子進程不關閉
二、進程管理工具
v 進程的分類:
CPU-Bound :CPU 密集型(CPU運算),非交互 ;
IO-Bound :IO 密集型(dd讀寫;ftp下載),交互
v Linux 系統狀態的查看及管理工具:pstree, ps, pidof,pgrep, top, htop, glance, pmap, vmstat, dstat, kill,
pkill, job, bg, fg, nohup
v pstree 命令:pstree – display a tree of processes顯示進程樹 父子關系
-p:顯示進程PID ; -n:按進程大小排序
2.1 ps: process statu 進程狀態
列舉進程ps – report a snapshot of the current processes 報告簡短的當前進程
Linux 系統各進程的相關信息均保存在/proc/PID 目錄下的各文件中
v 適用ps 來查看進程信息
v ps [OPTION]… 默認顯示當前終端中的進程 ;支持三種選項:
UNIX 選項 如-A -e ; BSD 選項 如a ; GUN 選項 如——help
a 選項包括所有終端中的進程 ; x 選項包括不鏈接終端的進程
f 選項顯示進程的父進程 ; u 選項顯示進程所有者的信息 (顯示真正生效user的進程root) ;
o 屬性… 選項顯示定制的信息:pid 、comm 、%cpu 、%mem 、state 、tty 、euser 、ruser(生效的使用者)
一般組合使用ps axu
2.1.1 ps axu進程管理工具
v VSZ: Virtual memory SiZe ,虛擬內存集(承諾的內存),線性內存 ;
RSS: ReSident Size, 常駐內存集(真正分配的內存)
STAT :進程狀態
R :running運行的 ; S: interruptable sleeping可中斷的 ;D: uninterruptable sleeping不可中斷的
T: stopped 停止的 ; Z: zombie僵死的 ; s: session leader ,會話(子進程)發起者
+: 前臺進程 ; l: 多線程進程 ; N :低優先級進程 ; <: 高優先級進程
2.1.2 ps -axo僅顯示指定的進程信息
-e: 顯示所有進程 ; -f: 顯示完整格式程序信息
-F: 顯示更完整格式的進程信息 ; -H: 以進程層級格式顯示進程相關信息
v 常用組合:-ef:顯示所有進程玩著呢改革是程序信息
常用組合:-eFH:以進程層級格式顯示所有進程完整格式進程信息。
常用組合:自定義
-eo pid,tid,class,rtprio,ni,pri,(顯示優先級)psr,pcpu,stat,comm(顯示命令)
axo stat,euid(運行的ID),ruid(真正的ID),tty,tpgid,sess,pgrp,ppid(父進程的進程編號),pid,pcpu,comm
ni: nice值 ; pri: priority優先級 ; psr: processor CPU編號 ; rtprio:實時優先級
搜索進程 :最靈活:ps 選項(aux) | 其它命令(grep) 隨后用kill殺掉進程
2.2 pgrep按預定義的模式
pgrep [options] pattern
-u uid: effective user ,生效者 ;-U uid: real user ,真正發起運行命令者 ; -t terminal: 與指定終端相關的進程
-l: 顯示進程名(centos7) ;-a: 顯示完整格式的進程名 ; -P pid: 顯示指定進程的子進程
v顯示命令的PID:pgrep —a http 或者 pstree -p 在進程樹下尋找
按確切的程序名稱:/sbin/pidof :pidof bash:查看進程的編號
三、系統觀察工具
3.1 uptime 查看系統啟動負載
顯示當前時間,系統已啟動的時間和當前上線人數,系統平均負載(1,5,10 分鐘的平均負載,一般不會超過1)
v 系統平均負載:指在特定時間間隔內運行隊列中的平均進程數
v 如果 每個CPU內核的當前活動進程數不大于3的話,那么系統的性能良好。 如果每個CPU 內核的任務數大于5 ,那么這臺機器的性能有嚴重問題。
v 如果linux 主機是1 個雙核CPU 的話,當Load Average為6 的時候說明機器已經被充分使用了。
3.2 top動態觀察
top – d #: 指定刷新時間間隔,默認為3秒 ; -b: 以批次方式(支持翻頁顯示 ;-n #: 顯示多少批次
top顯示分為:首部信息顯示、命令行、欄位信息顯示
3.2.1首部信息顯示
uptime 信息:l 命令
tasks 及cpu 信息:t 命令
running sleeping stopped zombie
cpu 分別顯示:1 ( 數字)
us :用戶空間 ; sy :內核空間 ; ni :調整nice 時間 ; id :空閑
wa :等待IO 時間 ; hi :硬中斷 ; si :軟中斷(模式切換) ; st :虛擬機偷走的時間
memory 信息:m 命令
3.2.2 命令行
top的內置命令:
排序:P :以占據的CPU 百分比,%CPU ; M :占據內存百分比,%MEM ; T :累積占據CPU 時長,TIME+
其它:退出命令:q ; 修改刷新時間間隔:s ; 終止指定進程:k 殺進程 ; 保存文件:W
3.2.3欄位信息簡介
PID (Process Id): 任務的進程ID ;USER (User Name): 任務所有者名稱
PR (Priority): 優先級 ;NI(nice)優先級 ;VIRT(虛擬內存) ; RES(實際使用內存) ;
SHR(進程與其他進程共享內存大小,可以通過RES – SHR來計算所占用內存大?。?/span>
%CPU (CPU usage):CPU 使用率 ; %MEM (Memory usage (RES)): 內存使用率
S (Process Status): 進程狀態 ; TIME+ (CPU Time, hundredths):CPU 時間,精確到秒
COMMAND:使用的命令。
其他命令行(不在top里的,可以通過ps命令查看)
RUSER (Real User Name): 任務的所有者真實名稱 ;PPID (Parent Process Pid): 父任務的進程ID
UID (User Id): 任務所有者ID ;GROUP (Group Name): 任務所有者群組名 ;TTY (Controlling Tty): 終端
3.3 htop 命令top增強版
需從Fedora-EPEL 源安裝:wget http://172.16.0.1/fedora-epel/7/x86_64
選項:
-d #: 指定延遲時間; -u UserName: 僅顯示指定用戶的進程; -s COLUME: 以指定字段進行排序;
子命令:
s: 跟蹤選定進程的系統調用; l: 顯示選定進程打開的文件列表; a :將選定的進程綁定至某指定CPU 核心;
t: 顯示進程樹
3.4 vmstat顯示虛擬內存
v vmstat 命令:虛擬內存信息
vmstat [options] [delay [count]] vmstat 1 10:1s監控一次,掃10次結束 ; –s: 顯示內存的統計數據
v procs: ls /proc 出現的都是進程編號
r :等待運行的進程的個數,和核心數有關 ;b :處于不可中斷睡眠態的進程個數( 被阻塞的隊列的長度)
v memory:
swpd: 交換內存的使用總量 ; free :空閑物理內存總量
buffer :用于buffer 的內存總量 ; cache :用于cache 的內存總量
v swap交換:
si :從磁盤交換進內存的數據速率(kb/s) ;so :從內存交換至磁盤的數據速率(kb/s)
v io讀寫:
bi :從塊設備讀入數據到系統的速率(kb/s) dd if=/dev/sda of=/dev/dull :讀入內存
bo: 保存數據至塊設備 的 速率 dd if=/dev/zero of=f1 :從內存寫出
v system:
in: interrupts, 中斷速率,包括時鐘 ; cs: context switch, 進程切換速率
v cpu:
us:Time spent running non-kernel code用戶運行程序占用的百分比
sy: Time spent running kernel code 用于運行內核占用的cpu百分比
id: Time spent idle. Linux 2.5.41 前, 包括IO-wait time. idle空閑占cpu的百分比
wa: Time spent waiting for IO. 2.5.41 前,包括in idle. 等待io花費的時間
st: Time stolen from a virtual machine. 2.6.11 前, unknown. 被虛擬機偷走的時間
3.5 pmap 命令
進程對應的內存映射 如pmap 1 顯示第1個進程(init)與內存的映射關系
v pmap [options] pid […] -x: 顯示詳細格式的信息;
另外 一種實現: cat /proc/PID/maps 查看內存映射關系
3.6 glances遠程系統監控工具
v glances 命令:EPEL源 wget http://172.16.0.1/fedora-epel/7/x86_64
監控時注意防火墻的問題
glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port]
[-P password] [–password] [-t refresh] [-f file] [-o output]
3.6.1常用選項
-b: 以Byte 為單位顯示網卡數據速率 ; -d: 關閉磁盤I/O 模塊 ; -f /path/to/somefile: 設定輸入文件位置
-o {HTML|CSV} :輸出格式 ; -m: 禁用mount 模塊 ; -n: 禁用網絡功能模塊
-t #: 延遲時間間 ;-1 :每個CPU 的相關數據單獨顯示
3.6.2排序和顯示內建命令
a Sort processes automatically l Show/hide logs
c Sort processes by CPU% b Bytes or bits for network I/O
m Sort processes by MEM% w Delete warning logs
p Sort processes by name x Delete warning and critical logs
i Sort processes by I/O rate 1 Global CPU or per-CPU stats
d Show/hide disk I/O stats h Show/hide this help screen
f Show/hide file system stats t View network I/O as combination
n Show/hide network stats u View cumulative network I/O
s Show/hide sensors stats q Quit (Esc and Ctrl-C also work)
y Show/hide hddtemp stats
3.6.3 C/S 模式下運行glances 命令
v 服務模式:glances -s -B IPADDR ( IPADDR: 指明監聽的本機哪個地址)
v 客戶端模式:glances -c IPADDR (IPADDR :要連入的服務器端地址)
3.7 dstat 系統資源統計
v dstat [-afv] [options..] [delay [count]]
-c: 顯示cpu 相關信息 ; -C #,#,…,total 顯示所有cpu信息(多個cpu)
-d: 顯示disk 相關信息 ;-D total,sda,sdb,…
-g :顯示page 相關統計數據 ;-m: 顯示memory 相關統計數據
-n: 顯示network 相關統計數據 ;-p: 顯示process 相關統計數據
-r: 顯示io 請求相關的統計數據 ;-s: 顯示swapped 相關的統計數據
-r:io請求速率 -y:系統相關數據,包括中斷和進程切換
v –tcp ; –udp ; –unix ; –raw(raw套接字) ; –socket ; –ipc:進程通信相關速率
v –top-cpu :顯示最占用CPU 的進程
v –top-io: 顯示最占用io 的進程
v –top-mem: 顯示最占用內存的進程
v –top-latency: 顯示延遲最大的進程
四、進程管理
4.1 kill 命令
向進程發送控制信號,以實現對進程管理(適用于所有終端)
顯示當前系統可用信號: kill -l
常用信號:man 7 signal
1) SIGHUP: 無須關閉進程而讓其重讀配置文件 如:service http restart、systemctl reload(restart)http
也可以用pgrep -a http或者pidof http 或者ps aux|grep http查出http的PID ,再用kill -1 PID重讀。
2) SIGINT: 中止正在運行的進程;相當于Ctrl+c ; 3)SIGQUIT:相當于quit 和ctrl+\
9) SIGKILL: 殺死正在運行的進程 ; 15) SIGTERM :終止正在運行的進程 ,kill命令默認為15,可以不寫
18) SIGCONT :繼續運行 ;19) SIGSTOP :后臺休眠
指定信號的方法:
(1) 信號的數字標識;1, 2, 9 ,15,18,19,22
(2) 信號完整名稱;SIGHUP ; (3) 信號的簡寫名稱;HUP
ps aux | grep ming 查找有關ming程序的PID
4.1.1結束進程
可以結束后臺運行程序
按PID :kill [-SIGNAL] pid … 需要配合ps ,pidof ,pgrep搜索進程號
按名稱:killall [-SIGNAL] comm… killall bash 只會殺死后臺使用bash的程序無效 ;killall -9 bash生效
按模式:pkill [options] pattern 有些有pgrep通用的如:-l ,-a
-SIGNAL ; -u uid: effective user ,生效者 ; -U uid: real user ,真正發起運行命令者
如: pkill -9 -u wang 踢出指定的登錄用戶 也能pkill -9 -u root 不過之后必須重啟
-t terminal: 與指定終端相關的進程 ; -l: 顯示進程名
-a: 顯示完整格式的進程名 ; -P pid: 顯示當前進程的子進程的信息
4.2 作業管理
v Linux 的作業控制
前臺作業:通過終端啟動,且啟動后一直占據終端;
后臺作業:可通過終端啟動,但啟動后即轉入后臺運行(釋放終端)
v 如何讓作業運行于后臺?
(1) 運行中的作業: Ctrl+z 后臺休眠
(2) 后臺進程(尚未啟動的作業):# COMMAND & 用ctrl c不能打斷 ;需要用fg調至前臺,才能結束。
v 后臺作業 雖然被送往后臺運行,但其依然與終端相關;退出終端,將關閉后臺作業。
如果希望送往后臺后,剝離與終端的關系(防止斷網、斷電) :
# nohup COMMAND &,但是會把命令執行后的文件重定向到/root/nohup.out 中,因此 &> /dev/zero`
#screen;COMMAND
4.2.1 jobs 查看本終端的作業信息
v 作業控制:
# fg [[%]JOB_NUM] :把指定的后臺作業調回前臺;
# bg [[%]JOB_NUM] :讓送往后臺的作業在后臺繼續運行;
# kill [%JOB_NUM] :終止指定的作業;
并行運行:同時運行多個進程,提高效率運行vim腳本
如:vi all.sh
f1.sh&
f2.sh&
f3.sh&
v如:(f1.sh&);(f2.sh&);(f3.sh&) ; { f1.sh& f2.sh& f3.sh& }
4.2.2進程優先級
進程優先級調整: 靜態優先級:100-139
進程默認啟動時的nice 值為0 ,優先級為120
只有根用戶才能降低nice 值(提高優先性)
v nice 命令:nice [OPTION] [COMMAND [ARG]…] 也可以nice ——10 優先級為—5
v renice 命令: renice [-n] priority pid… ;查看:renice -n -23 PID
ps axo pid,comm,ni
五、任務計劃
v Linux 任務計劃、周期性任務執行
未來的某時間點執行一次 任務:at
batch 系統 自行選擇空閑時間去執行此處指定的任務
周期性 運行某任務: cron
5.1 at 任務
CentOS7 :systemctl is-enabled atd查看開機是否自啟 ;systemctl enable atd 開機啟動 ;
systemctl disable atd開機禁用 ; systmctl status atd 查看當前狀態 systemctl start atd systemctl stop atd
CentOS6: runlevel 查看開機是否自啟 chkconfig –list atd 開機啟動 ntsysv 開機禁用
service atd status |start |stop |restart
包:at /var/spool/at 文件的任務存儲目錄 可以在里面修改任務。
v at 命令:at [option] TIME
5.1.1常用選項
-V 顯示版本信息 ; -l: 列出指定隊列中等待運行的作業;相當于atq
-d: 刪除指定的作業;相當于atrm ; -c: 查看具體作業任務
-f /path/from/somefile :從指定的文件中讀取任務
-m: 當任務被完成之后,將給用戶發送郵件,即使沒有標準輸出,有標準輸出也不在屏幕上顯示
v 注意:作業執行命令的結果中的標準輸出和錯誤以郵件通知給關用戶
計劃任務at的腳本可以送至/dev/dull ,沒有郵件能減少mail信息產生垃圾郵件。
v TIME: 定義出什么時候進行 at 這項任務的時間
HH:MM [YYYY-mm-dd] ;noon, midnight, teatime (4pm) ;tomorrow
now+#{minutes,hours,days, OR weeks}
5.1.2 at 時間格式
v HH:MM 02:00 在今日的 HH:MM 進行,若該時刻已過,則明天此時執行任務 (重啟不丟)
v HH:MM YYYY-MM-DD 04:00 2016-09-20 at 12:00 > wall class is over >ctrl d
規定在某年某月的某一天的特殊時刻進行該項任務
v HH:MM[am|pm] [Month] [Date]
04pm March 17 ; 17:20 tomorrow
v HH:MM[am|pm] + number [minutes|hours|days|weeks]
在某個時間點再加幾個時間后才進行該項任務
now + 5 minutes ; 04pm + 3 days
5.1.3 at任務配置文件
v 執行方式:
1、交互式 2、輸入重定向 3 、at –f 文件
v 依賴與atd 服務, 需要啟動才能實現at 任務
v at 隊列存放在/var/spool/at 目錄中
v /etc/at.{allow,deny} 控制用戶是否能執行at 任務
白名單:/etc/at.allow 默認不存在,只有該文件中的用戶和root才能執行at 命令,其他用戶都不行
黑名單:/etc/at.deny行拒絕該文件中用戶執行at 命令,而沒有在at.deny文件中的使用者則可執行
如果兩個文件都不存在有,只有 root 行可以執行at 命令
5.2 cron周期性任務計劃
centos6中查看cron是否為開機啟動的服務:chkconfig –list crond
5.2.1相關的程序包
cronie: 主程序包,提供crond 守護進程及相關輔助工具 rpm -ql cronie
cronie-anacron :cronie 的補充程序;用于監控cronie任務執行狀況;如cronie 中的任務在過去該運行的時間點未
能正常運行,則anacron 會隨后啟動一次此任務 rpm -ql cronie-anacron
crontabs :包含CentOS 提供系統維護任務 rpm -ql crontabs
v 確保crond 守護處于運行狀態:
CentOS 7:systemctl status crond
CentOS 6:service crond status
v 計劃周期性執行的任務提交給crond ,到指定時間會自動運行
系統cron 任務:系統維護作業 vim /etc/crontab
用戶cron 任務: crontab 命令 -e:創建計劃任務
v 日志:vim /var/log/cron/user
5.2.2 時間表示法
v 系統cron 任務:/etc/crontab
v 注釋行以 # 開頭
v 詳情參見 man 5 crontab
# 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
v 例如:晚上9 點10 分運行echo 命令:10 21 * * * centos /bin/echo "Howdy!"
v (1) 特定值;給定時間點有效取值范圍內的值
v (2) * 給定時間點上有效取值范圍內的所有值 :表示“每…”
v (3) 離散取值:#,#,# ; (4) 連續取值:– #-#
v (5) 在指定時間范圍上,定義步長: /#: # 即為步長
v 例如:每3 小時echo 命令:0 */3 * * * centos /bin/echo "howdy!"(腳本路徑)
時間格式
v @reboot Run once after reboot.
v @yearly 0 0 1 1 *
v @annually 0 0 1 1 *
v @monthly 0 0 1 * *
v @weekly 0 0 * * 0
v @daily 0 0 * * *
v @hourly 0 * * * *
5.2.3配置計劃任務文件
系統的計劃任務:
/etc/crontab (centos6) ; /etc/cron.d/ 配置文件
/etc/cron.hourly/ 腳本 ; /etc/cron.daily/ 腳本 ;/etc/cron.weekly/ 腳本 ; /etc/cron.monthly/ 腳本
anacron 系統:運行計算機關機時cron 不運行的任務,CentOS6 以后版本取消
anacron 服務,由crond 服務管理。
v 假設計算機沒有一直開機
v 對筆記本電腦、臺式機、工作站及其它不一直開機的系統很重要
v 對偶爾要關機的服務器很有用
v 配置文件:/etc/anacrontab ,負責執行/etc/ cron.daily
/etc/cron.weekly /etc/cron.monthly 中系統任務。
/etc/cron.hourly/ 由/cron.d/0hourly 執行
? 字段1 :如果在這些日子里沒有運行這些任務……
? 字段2 :在重新引導后等待這么多分鐘后運行它
? 字段3 :任務識別器,在日志文件中標識
? 字段4 :要執行的任務
? 當執行任務時,更新/var/spool/anacron/ 中文件的時間戳
v CentOS6 使用/etc/cron.daily/tmpwatch 定時清除臨時文件
v CentOS7 使用systemd-tmpfiles-setup 服務實現
v 配置文件:
? /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
v 命令:systemd-tmpfiles –clean|remove|create configfile管理臨時文件
v 用戶cron:crontab 命令定義,每個用戶都有專用的cron 任務文件:/var/spool/cron/USERNAME
5.2.4 crontab 命令
crontab [-u user] [-l | -r | -e] [-i]
-l: 列出所有任務; -e: 編輯任務; -r: 移除所有任務; -i :同-r 一同使用,以交互式模式移除指定任務
-u user: 僅root 可運行,指定用戶管理cron 任務
v 控制用戶執行計劃任務 :/etc/cron.{allow,deny}
5.3 對比at 和crontab
v 用 一次性作業使用 at ;重復性作業使用crontab
Create |
at time |
crontab -e |
List |
at -l |
crontab -l |
Details |
at -c jobnum |
N/A |
Remove |
at -d jobnum |
crontab -r |
Edit |
N/A |
crontab -e |
注意:(1)沒有被重定向的輸出會被郵寄給用戶,因而記住 &> /dev/zero
v (2)根用戶能夠修改其它用戶的作業
注意:運行結果的標準輸出和錯誤以郵件通知給相關用戶
(1) COMMAND > /dev/null 計劃任務不要用echo
(2) COMMAND &> /dev/null
注意:對于cron 任務來講,% 有特殊用途;如果在命令中要使用%,則需要轉義;不過,如果把% 放置于單引中,
也可以不用轉義
例如:(1)如何在秒級別運行任務?
* * * * * for min in 0 1 2 ; do echo "hi" ; sleep 20; done
v (2)如何實現每7 分鐘運行一次任務? */7 * * * *
v sleep 命令:sleep NUMBER[SUFFIX]…
us:微秒 ; s: 秒, 默認 ;m: 分 ; h: 小時 ; d: 天
原創文章,作者:lyx,如若轉載,請注明出處:http://www.www58058.com/61077