linux基礎學習之進程管理和任務計劃

內容:

  進程相關概念(用戶空間、內核空間,進程、線程)

  進程及系統相關工具(ps、top、pgrep、pidof、kill)

  調整nice值(nice、renice)

  作業管理(jobs、fg、bg、kill,&)

  計劃任務(at、crontab)

一、進程相關概念

內核的功用:進程管理、文件系統、網絡功能、內存管理、驅動程序、安全功能等

內核空間和用戶空間關系

對計算機來說,其實只有CPU和內存,其中在某一時刻內存邏輯上分為兩部分(linux系統):用戶空間和內核空間,每一個用戶進程在內存的用戶空間進行運行,當用戶進程需要進行硬件資源的訪問和使用時

此時會通過系統調用到內核空間,因為只有內核才有權限進行硬件的訪問,此時未運行完的進程會暫時中止(保留現場),CPU進而處理內核相關請求,而中止的進程相關狀態信息保存在內核task struct(Linux內核存儲進程信息的數據結構格式),即相當于內核會建立一個的運行的

程序的數據庫,當內核硬件的請求CPU處理完畢,內核會根據記錄進程數據庫中讀取進程的狀態(恢復現場),從而知道程序運行到哪一步,進而繼續運行下去,而不需要重新運行進程

因為每個進程可以通過系統調用進入內核,因此,Linux內核空間由系統內的所有進程共享。

進程和線程的關系:

進程和線程都是由操作系統所體會的程序運行的基本單元,系統利用該基本單元實現系統對應用的并發性。進程和線程的區別在于: 

簡而言之,一個程序至少有一個進程,一個進程至少有一個線程. 

線程的劃分尺度小于進程,使得多線程程序的并發性高。 

另外,進程在執行過程中擁有獨立的內存單元,而多個線程共享內存,從而極大地提高了程序的運行效率。 

線程在執行過程中與進程還是有區別的。每個獨立的線程有一個程序運行的入口、順序執行序列和程序的出口。但是線程不能夠獨立執行,必須依存在應用程序中,由應用程序提供多個線程執行控制。 

從邏輯角度來看,多線程的意義在于一個應用程序中,有多個執行部分可以同時執行。但操作系統并沒有將多個線程看做多個獨立的應用,來實現進程的調度和管理以及資源分配。這就是進程和線程的重要區別。 

進程是具有一定獨立功能的程序關于某個數據集合上的一次運行活動,進程是系統進行資源分配和調度的一個獨立單位. 

線程是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位.線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),但是它可與同屬一個進程的其他的線程共享進程所擁有的全部資源. 

一個線程可以創建和撤銷另一個線程;同一個進程中的多個線程之間可以并發執行.

(1)進程創建:

init:第一個進程

父子關系

進程:都由其父進程創建,COW

fork(), clone()

任何一個進程都是init的子進程

[11:08 root@Centos6.8~]# pstree
init─┬─S80cmd───curl
├─abrtd
├─acpid
├─atd
├─auditd───{auditd}
├─automount───4*[{automount}]
├─bonobo-activati───{bonobo-activat}
├─certmonger
├─clock-applet
├─console-kit-dae───63*[{console-kit-da}]
├─crond
├─cupsd
├─2*[dbus-daemon───{dbus-daemon}]
├─2*[dbus-launch]
├─devkit-power-da
├─dhclient
├─gconf-im-settin
├─gconfd-2
├─gdm-binary─┬─gdm-simple-slav─┬─Xorg───2*[{Xorg}]
│            │                 ├─gdm-session-wor─┬─gnome-session─┬─abrt-applet
│            │                 │                 │               ├─bluetooth-apple
│            │                 │                 │               ├─evolution-alarm
│            │                 │                 │               ├─gdu-notificatio
│            │                 │                 │               ├─gnome-panel
│            │                 │                 │               ├─gnome-power-man
│            │                 │                 │               ├─gnome-volume-co
│            │                 │                 │               ├─gpk-update-icon
│            │                 │                 │               ├─metacity───{metacity}
│            │                 │                 │               ├─nautilus
│            │                 │                 │               ├─nm-applet
│            │                 │                 │               ├─polkit-gnome-au
│            │                 │                 │               ├─python
│            │                 │                 │               ├─restorecond
│            │                 │                 │               └─{gnome-session}
│            │                 │                 └─{gdm-session-wo}
│            │                 └─{gdm-simple-sla}
│            └─{gdm-binary}
├─gdm-user-switch
├─gnome-keyring-d───2*[{gnome-keyring-}]
├─gnome-screensav
├─gnome-settings-───{gnome-settings}
├─gnome-terminal─┬─bash
│                ├─gnome-pty-helpe
│                └─{gnome-terminal}
├─gnote
├─gvfs-afc-volume───{gvfs-afc-volum}
├─gvfs-fuse-daemo───3*[{gvfs-fuse-daem}]
├─gvfs-gdu-volume
├─gvfs-gphoto2-vo
├─gvfsd
├─gvfsd-burn
├─gvfsd-metadata
├─gvfsd-trash
├─hald─┬─hald-runner─┬─hald-addon-acpi
│      │             ├─hald-addon-inpu
│      │             └─hald-addon-stor
│      └─{hald}
├─im-settings-dae
├─irqbalance
├─5*[mingetty]
├─notification-ar
├─pcscd───{pcscd}
├─polkitd
├─pulseaudio─┬─gconf-helper
│            └─2*[{pulseaudio}]
├─rpc.statd
├─rpcbind
├─rsyslogd───3*[{rsyslogd}]
├─rtkit-daemon───2*[{rtkit-daemon}]
├─seahorse-daemon
├─sshd───sshd───bash───pstree
├─trashapplet
├─udevd───2*[udevd]
├─udisks-daemon─┬─udisks-daemon
│               └─{udisks-daemon}
└─wnck-applet

(2)進程狀態:

運行態:running【一個CPU一個時間只能運算一個進程,即同一時間只有一個進程是運行狀態】

就緒態:ready

睡眠態:進程所需要的資源沒有被正常獲取或者正在等待資源的獲取時,就會進入睡眠狀態

可中斷:interruptable(如ctrl+c能使進程中斷的就是可中斷的睡眠)

不可中斷:uninterruptable(在運行的過程中不能中斷,即不能kill)

停止態:stopped,暫停于內存中,但不會被調度,除非手動啟動

僵死態:zombie,結束進程,父進程結束前,子進程不關閉

(3進程優先級:

優先級高代表:

1、獲得更多的CPU時間

2、更優先獲得運行的機會

系統優先級:數字越小,優先級越高

0-139(CentOS4,5)

各有140個運行隊列和過期隊列

0-98,99(CenOS6)

實時優先級:99-0:值最大優先級最高

Nice值:-20,19對應系統優先級100-139或99

1、普通用戶只能調大自己進程的nice值

2、root可以調大調小nice 

時間復雜度:Big O,用時和規模的關系(橫坐標可以是規?;蛘哧犃袛盗校v坐標是時間)

O(1): 

O(logn), 

O(n)線性, 

O(n^2)拋物線, 

O(2^n)

(4)進程編號:

PID:process ID

每一進程的PID都是唯一的,就算進程結束,一般其他程序都不會占用此號碼,所以會看到中間有些數字沒有連續,代表有些進程產生并且已經結束

任何一個進程都是init的子進程,所以init的PID永遠是1

/proc下每個文件夾名為數字的都代表一個進程的編號PID

[14:22 root@Centos6.8~]# ls /proc/
1      14    1692  2     22    30    3758  3892  3935  4122  4785  64         cmdline      irq         mounts        swaps
10     1426  17    20    2220  31    38    3894  3936  4124  4789  65         cpuinfo      kallsyms    mpt           sys
11     1460  1700  2007  2231  32    3829  39    3941  4156  48    66         crypto       kcore       mtd           sysrq-trigger
1123   1494  1727  2012  2239  33    3842  3904  3942  4163  49    7          devices      keys        mtrr          sysvipc
1124   15    1745  2014  23    34    3847  3905  3945  4194  5     730        diskstats    key-users   net           timer_list
1125   1512  18    2017  24    342   3854  3908  3946  4196  50    8          dma          kmsg        pagetypeinfo  timer_stats
1126   1532  1881  2019  25    343   3856  3910  4     4197  51    9          driver       kpagecount  partitions    tty
1173   1555  1894  2028  26    344   3857  3911  40    42    52    98         execdomains  kpageflags  sched_debug   uptime
12     1599  19    2060  27    35    3862  3912  4008  43    53    99         fb           loadavg     schedstat     version
13     16    1935  2064  28    36    3866  3915  41    444   548   acpi       filesystems  locks       scsi          vmallocinfo
132    1632  1949  2087  280   37    3880  3918  4110  445   6     asound     fs           mdstat      self          vmstat
13524  1644  1964  21    281   3723  3882  3921  4112  46    60    buddyinfo  interrupts   meminfo     slabinfo      zoneinfo
13615  1645  1980  2159  29    3747  3887  3927  4117  47    61    bus        iomem        misc        softirqs
13616  1691  1991  2167  3     3755  3890  3933  4120  4718  62    cgroups    ioports      modules     stat

二、進程常用工具命令:

1、ps:process state

語法:ps [options]

注意:該命令查看的是某一時刻的瞬間進程運行的狀態,非連續查看

支持三種選項:

UNIX選項如-a(選項前加-)

BSD選項如a

?默認顯示當前終端中的進程

?a選項包括所有終端中的進程

?x選項包括不連接終端的進程(TTY的狀態為?的進程)

?u選項顯示進程所有者的信息

?f選項顯示進程的父進程

?o屬性… 選項顯示定制的信息:

?pid、comm、%cpu、%mem、state、tty、euser、ruser

[14:38 root@Centos6.8/proc/10]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.0  19352  1548 ?        Ss   08:46   0:02 /sbin/init
root          2  0.0  0.0      0     0 ?        S    08:46   0:00 [kthreadd]
root       2007  0.0  0.0   4064   544 tty2     Ss+  08:48   0:00 /sbin/mingetty /dev/tty2
root       2012  0.0  0.0   4064   540 tty3     Ss+  08:48   0:00 /sbin/mingetty /dev/tty3
root       2014  0.0  0.0   4064   544 tty4     Ss+  08:48   0:00 /sbin/mingetty /dev/tty4
root       2017  0.0  0.0   4064   540 tty5     Ss+  08:48   0:00 /sbin/mingetty /dev/tty5
root       2019  0.0  0.0   4064   544 tty6     Ss+  08:48   0:00 /sbin/mingetty /dev/tty6
root       2028  0.0  0.1  12640  2876 ?        S<   08:48   0:00 /sbin/udevd -d
root       2060  0.0  0.1 164924  3564 ?        Sl   08:48   0:00 /usr/libexec/gdm-simple-slave --display-id /org/gnome/DisplayManager
root       2064  0.0  1.5 196384 29084 tty1     Ssl+ 08:48   0:04 /usr/bin/Xorg :0 -br -verbose -audit 4 -auth /var/run/gdm/auth-for-g
root       2087  0.0  0.1 1036464 3360 ?        Sl   08:48   0:00 /usr/sbin/console-kit-daemon --no-daemon
gdm        2159  0.0  0.0  20044   696 ?        S    08:48   0:00 /usr/bin/dbus-launch --exit-with-session

USER:發起進程的用戶
PID:PID號
%CPU:使用CPU百分比
%MEM:使用內存百分比
VSZ:Virtual memory SiZe,虛擬內存集,線性內存
RSS:ReSidentSize, 常駐內存集
TTY:和終端相關
STAT:進程狀態
D:不可中斷睡眠
S:可中斷的睡眠
R:就緒或運行狀態
T:中止狀態
Z:僵死狀態
<:高優先級進程
N:低優先級進程
+:前臺進程組中的進程
l:多線程的進程
s:會話進程的首進程
START:進程開始時間
TIME:進程真正在CPU運行的時間,而非掛表時長
COMMANDD:發起進程的命令,【如果命令中有中括號,代表是內核進程】

2、top:可查看動態的進程情況

top - 16:02:39 up  7:15,  3 users,  load average: 0.15, 0.25, 0.39
Tasks: 163 total,   1 running, 162 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.2%us,  0.7%sy,  0.0%ni, 99.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1907300k total,   683656k used,  1223644k free,    81328k buffers
Swap:  4095996k total,        0k used,  4095996k free,   249180k cached
PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                
3 root      RT   0     0    0    0 S  0.3  0.0   0:00.69 migration/0                                                             
1894 root      20   0  105m  972  580 S  0.3  0.1   0:08.28 S80cmd                                                                  
3910 root      20   0  227m 2052 1704 S  0.3  0.1   0:01.80 gvfs-afc-volume                                                         
17909 root      20   0 15032 1264  936 R  0.3  0.1   0:00.12 top                                                                     
1 root      20   0 19352 1548 1232 S  0.0  0.1   0:02.02 init                                                                    
2 root      20   0     0    0    0 S  0.0  0.0   0:00.03 kthreadd                                                                
4 root      20   0     0    0    0 S  0.0  0.0   0:00.08 ksoftirqd/0                                                             
5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 stopper/0

  

[16:03 root@Centos6.8/proc/10]# uptime 
16:03:38 up  7:16,  3 users,  load average: 0.25, 0.25, 0.38

top命令說明:
第一行:是uptime信息,其中load average:N,M,K:N,M,K代表過去1,5,15分鐘CPU負載情況,
如果這個數除以CPU的數目,結果高于5的時候就表明系統在超負荷運轉了,正常應該控制在小于1的范圍內,通常我們先看15分鐘load,如果load很高,再看1分鐘和5分鐘負載,查看是否有下降趨勢。
第三行:CPU的運算占用比
us(user):用戶空間的進程
sy(system):內核空間
ni(nice):調整nice的時間
id(idle):空閑
wa(wait):等待IO時間
hi(hardinterrupt):硬中斷
si(softinterrupt):軟中斷
st(stool):虛擬機偷走的時間
第四行:物理內存使用情況
第五行:虛擬內存使用情況

交互命令:

M: 根據駐留內存大小進行排序

P:根據CPU使用百分比進行排序

T: 根據累計時間進行排序

l: 是否顯示平均負載和啟動時間

t: 是否顯示進程和CPU狀態相關信息

m: 是否顯示內存相關信息

c: 是否顯示完整的命令行信息

q: 退出top

k: 終止某個進程

3、進程搜索:pgrep、pidof

pgrep:查找摸個進程的ID號

pgrep[options] patter

-u uid: effective user,生效者

-U uid: real user,真正發起運行命令者

-t terminal: 與指定終端相關的進程

-l: 顯示進程名

-a: 顯示完整格式的進程名

-P pid: 顯示父進程為此處指定的進程的進程列表

[15:34 root@Centos6.8/proc/10]# pgrep -u root ssh
1881
4785

pidof:根據程序名查找相關的PID

pidof [-s] [-c] [-x] [-m] [-o omitpid] [-o omitpid..]  program [program..]

[15:37 root@Centos6.8/proc/10]# pidof bash
4197

4、kill

kill:向進程發送控制信號,以實現對進程管理

顯示當前系統可用信號:kill -l

常用信號:man 7 signal

1) SIGHUP: 無須關閉進程而讓其重讀配置文件

2) SIGINT: 中止正在運行的進程;相當于Ctrl+c

9) SIGKILL: 殺死正在運行的進程(強制立刻殺死進程)

15) SIGTERM:終止正在運行的進程(可能不會立即生效,會等進程保存完所有數據才正常退出)

18) SIGCONT:

19) SIGSTOP:

指定信號的方法:

(1) 信號的數字標識;1, 2, 9

(2) 信號完整名稱;SIGHUP

(3) 信號的簡寫名稱;HUP

[17:03 root@Centos6.8/proc/10]# kill -l
 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL10) SIGUSR1
11) SIGSEGV12) SIGUSR213) SIGPIPE14) SIGALRM15) SIGTERM
16) SIGSTKFLT17) SIGCHLD18) SIGCONT19) SIGSTOP20) SIGTSTP
21) SIGTTIN22) SIGTTOU23) SIGURG24) SIGXCPU25) SIGXFSZ
26) SIGVTALRM27) SIGPROF28) SIGWINCH29) SIGIO30) SIGPWR
31) SIGSYS34) SIGRTMIN35) SIGRTMIN+136) SIGRTMIN+237) SIGRTMIN+3
38) SIGRTMIN+439) SIGRTMIN+540) SIGRTMIN+641) SIGRTMIN+742) SIGRTMIN+8
43) SIGRTMIN+944) SIGRTMIN+1045) SIGRTMIN+1146) SIGRTMIN+1247) SIGRTMIN+13
48) SIGRTMIN+1449) SIGRTMIN+1550) SIGRTMAX-1451) SIGRTMAX-1352) SIGRTMAX-12
53) SIGRTMAX-1154) SIGRTMAX-1055) SIGRTMAX-956) SIGRTMAX-857) SIGRTMAX-7
58) SIGRTMAX-659) SIGRTMAX-560) SIGRTMAX-461) SIGRTMAX-362) SIGRTMAX-2
63) SIGRTMAX-164) SIGRTMAX

5、killall:kill單次只能殺死一個進程PID,當一個服務開啟多個進程,而要結束該服務時,可使用killall殺死該服務即可 

killall:kill processes by name

kill [options] name

三、調整nice優先級

nice:-20到19,值越小優先級越高

1、調整已經啟動的進程nice值

renice NI PID 

[17:28 root@Centos6.8/proc/10]# pgrep bash
4197
4789
[17:28 root@Centos6.8/proc/10]# renice 3 4789
4789: old priority 0, new priority 3
[17:28 root@Centos6.8/proc/10]# renice -3 4789
4789: old priority 3, new priority -3

2、調整未啟動的進程nice優先級:

nice -n NI COMMAND

[17:32 root@Centos6.8/proc/10]# nice -n -3 date
Tue Sep  6 17:32:09 CST 2016

四、作業管理

(1)Linux的作業控制

前臺作業:通過終端啟動,且啟動后一直占據終端;

后臺作業:可通過終端啟動,但啟動后即轉入后臺運行(釋放終端)

?如何讓作業運行于后臺?

(1) 運行中的作業:Ctrl+z(進程會處于暫停狀態)

(2) 尚未啟動的作業:COMMAND &

?此類后臺作業雖然被送往后臺運行,但其依然與終端相關;退出終端,將關閉后臺作業.

  查看所有作業:

jobs:作業號不是進程號

+:命令將默認操作的作業

—:命令將第二個默認操作的作業

[18:37 root@Centos6.8/proc/10]# ping 10.1.0.1
PING 10.1.0.1 (10.1.0.1) 56(84) bytes of data.
64 bytes from 10.1.0.1: icmp_seq=1 ttl=64 time=0.477 ms
^Z
[1]+  Stopped                 ping 10.1.0.1

 (2)作業控制:

fg %JOB_NUM:把指定的后臺作業調回前臺;

bg %JOB_NUM:讓送往后臺的作業在后臺繼續運行;

kill %JOB_NUM:終止指定的作業;

[18:32 root@Centos6.8/proc/10]# ping 10.1.0.1
PING 10.1.0.1 (10.1.0.1) 56(84) bytes of data.
64 bytes from 10.1.0.1: icmp_seq=1 ttl=64 time=0.365 ms
64 bytes from 10.1.0.1: icmp_seq=2 ttl=64 time=0.731 ms
^Z
[1]+  Stopped                 ping 10.1.0.1
[18:33 root@Centos6.8/proc/10]# fg %1
ping 10.1.0.1
64 bytes from 10.1.0.1: icmp_seq=3 ttl=64 time=0.972 ms
64 bytes from 10.1.0.1: icmp_seq=4 ttl=64 time=1.96 ms
64 bytes from 10.1.0.1: icmp_seq=5 ttl=64 time=1.73 ms
64 bytes from 10.1.0.1: icmp_seq=6 ttl=64 time=1.08 ms
^Z
[1]+  Stopped                 ping 10.1.0.1
[18:34 root@Centos6.8/proc/10]# jobs 
[1]+  Stopped                 ping 10.1.0.1
[18:34 root@Centos6.8/proc/10]# kill %1
[1]+  Stopped                 ping 10.1.0.1

(3)程序并行運行

1、使用腳本,每個子命令后加&

    vi 4.sh

1.sh&

2.sh&

3.sh&

[18:58 root@Centos6.8~]# paste -d% 1.sh 2.sh 3.sh
#!/bin/bash%#!/bin/bash%#!/bin/bash
while true%while true%while true
do%do%do
echo "1"%echo "2"%echo "3"
sleep 1%sleep 2%sleep 3
done%done%done
[18:58 root@Centos6.8~]# 3
2
1
1
2
1
3
1
2
1
1
3
2
1

? 2、使用小括號

( (f1.sh&);(f2.sh&);(f3.sh&))
[19:00 root@Centos6.8~]# ((/root/1.sh&);(/root/2.sh&);(/root/3.sh&))
[19:00 root@Centos6.8~]# 1
2
3
1
2
1
3
1
2
1

? 3、使用大括號

{ f1.sh& f2.sh& f3.sh& }

五、計劃任務

1、在未來的某個時間點執行一次某任務;

at

at 時間

at> COMMAND

at> Ctrl+d(提交命令)

指定時間:

絕對時間:HH:MM, DD.MM.YY  MM/DD/YY

相對時間:now+#

單位:minutes, hours, days, weeks

模糊時間:noon, midnight, teatime

常用選項:

-q QUEUE:

-l: 列出指定隊列中等待運行的作業;相當于atq

-d JOB_ID: 刪除指定的作業;相當于atrm

-c: 查看具體作業任務

-f /path/from/somefile:從指定的文件中讀取任務

-m:強制at發送郵件,表示執行完畢

注意:作業執行命令的結果中的標準輸出和錯誤以郵件通知給相關用戶

at允許或禁止某用戶的配置文件:

/etc/at.deny,/etc/at.allow

其中,如果只有/etc/at.deny,表示出了deny名單外的人都可以使用at,默認deny名單為空,表示所有人都可以使用

如果只有/etc/at.allow,表示只有名單的用戶才能使用at

如果兩個文件都存在,一般來說只有allow生效

如果兩個文件都沒有,則表示只有root才能使用at

2、周期性地執行某任務;

cron:自身是一個不間斷運行的服務,注意,當因關機等意外情況而是任務超時沒有執行,恢復服務后,默認也不會再回頭執行過時的任務

anacron: cron的補充,能夠實現讓cron因為各種原因在過去的時間該執行而未執行的任務在恢復正常執行一次;

注意,使用cron時先要查看系統的crond服務是否已經啟動:

[19:42 root@Centos6.8~]# service crond status
crond (pid  1949) is running...

cron: 

(1)系統cron任務:

/etc/crontab

分鐘  小時  天  月  周  用戶  任務

用戶cron任務:

/var/spool/cron/USERNAME

分鐘  小時  天  月  周  任務

# 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

(2)時間的有效取值:

分鐘:0-59

小時:0-23

天:1-31

月:1-12

周:0-7,0和7都表示周日

(3)時間通配表示:

*: 對應時間的所有有效取值

3 * * * * :每小時的第三分鐘

3 * * * 7:每周天的每小時的第三分鐘

13 12 6 7 *:每年7月的6號的12點13分鐘

,: 離散時間點: 

10,40 02 * * 2,5 :每周二凌晨2點10分、2點40分和每周五凌晨2點10分、2點40分

-:連續時間點:

10 02 * * 1-5:周一到周五的凌晨2點10分

/#: 對應取值范圍內每多久一次,#代表頻率

*/3 * * * *:每3分鐘

每兩小時執行一次:一定要在比小時更小的單位給一個具體數值

08 */2 * * *

每兩天執行一次:一定要在比天更小的單位給一個具體數值

10 04 */2 * *

(4)執行結果將以郵件形式發送給管理員:

*/3 * * * * /bin/cat /etc/fstab &> /dev/null 

(5)注意:              

1)cron的環境變量:cron執行所有命令都去PATH環境變量指定的路徑下去找,所以為避免某些命令不再PATH變量中,建議命令使用絕對路徑表示

cron默認搜索的PATH  /bin:/sbin:/usr/bin:/usr/sbin

如果運行的是腳本,要注意在腳本的開頭先聲明PATH:export PATH=

2)對于cron任務來講,%有特殊用途;如果在命令中要使用%,則需要轉義;不過,如果把%放置于單引號中,也可以不用轉義

用戶任務的管理:

crontab

-l: 列出當前用戶的所有cron任務

-e: 編輯創建周期任務

-r: 移除所有任務

-u USERNAME: 管理其用戶的cron任務

eg. crontab -eu USERNAME

原創文章,作者:麥德良,如若轉載,請注明出處:http://www.www58058.com/44140

(0)
麥德良麥德良
上一篇 2016-09-07
下一篇 2016-09-07

相關推薦

  • Redis集群明細文檔

    Redis目前版本是沒有提供集群功能的,如果要實現多臺Redis同時提供服務只能通過客戶端自身去實現(Memchached也是客戶端實現分布式)。目前根據文檔已經看到Redis正在開發集群功能,其中一部分已經開發完成,但是具體什么時候可以用上,還不得而知。文檔來源:http://redis.io/topics/cluster-spec 一、介紹   該文檔是…

    Linux干貨 2015-04-04
  • 文本處理:三劍客之sed及vim編輯器

    一、sed的用法詳解 sed作為Linux的第二招,有著非常強大的文本處理功能。sed是一種在線編輯器、行編輯器,每次處理一行內容。在處理時,sed首先將行放在內存中的一塊臨時緩沖區,通常配叫做模式空間(pattern space)。如果模式空間的行符合sed的匹配模式則將該行處理后送到標準輸出,如果不匹配則不做任何改動送到標準輸出。模式空間中一般情況下只會…

    Linux干貨 2016-08-12
  • Linux學習 Grep詳則。

    grep 功能說明:查找文件里符合條件的字符串。 語  法:grep [-abcEFGhHilLnqrsvVwxy][-A<顯示列數>][-B<顯示列數>][-C<顯示列數>][-d<進行動作>][-e<范本樣式>][-f<范本文件>][–help][范本樣式][文件或目錄&…

    Linux干貨 2017-07-24
  • Linux基礎——文件管理

    Linux基礎——文件管理 文件管理及常用命令詳解       Linux文件系統是以/為基本的倒置樹狀結構,我們來進一步學習下文件或者目錄的操作和管理命令:  目錄相關操作:cd、pwd、mkdir、rmdir 目錄及文件檢索:ls 復制、移動、刪除:cp、mv、rm…

    Linux干貨 2016-09-27
  • 以洪荒之力打開linux德·摩根定律

    德·摩根定律讓學習liunx的小伙伴繞得頭疼,現在我就用洪荒之力為大家理順一下這個定律。 由圖片可以看出, A=4+3 B=3+2 非A=2+1 非B=4+1 A且B就是代表既是A又是B的地方,A和B都有色塊3,所以色塊3代表了A且B 同時,我們再看A=4+3 ,B=3+2,我們可以推斷出,且運算的結果就是兩個算數式中重復的數字。 A且B=3 A或B就是代表…

    Linux干貨 2016-08-15
  • alias——Linux基本命令(4)

    1.     alias別名 (1)查看、設置別名 Linux系統提供了一個有用的工具叫alias,可以讓我們將一些需要頻繁使用的但又過于冗長的命令設置一個別名,這樣一來,以后只需輸入一個簡短的別名就可以達到同樣的作用。 alias顯看當前已定義的別名   使用aliasaliname=’comm…

    2017-07-13
欧美性久久久久