首页 > 代码库 > linux基础学习第十八天之进程管理和任务计划

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,用时和规模的关系(横坐标可以是规模或者队列数列,纵坐标是时间)

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


本文出自 “6638225” 博客,转载请与作者联系!

linux基础学习第十八天之进程管理和任务计划