第十四章 进程管理和计划任务

75 阅读8分钟

@[TOC](第十四章 进程管理和计划任务)

实验⼀:进程管理

⽬的

掌握linux系统中的进程查看、控制、系统资源使用情况等。

前提

可用的centos7系统,连接物理网络。

命令介绍

1、pstree命令查看进程树

【例1】显⽰进程树并显⽰进程pid

[root@magedu ~]# pstree -p
systemd(1)─┬─ModemManager(703)─┬─{ModemManager}(716)
 │ └─{ModemManager}(720)
 ├─NetworkManager(829)─┬─dhclient(987)
 │ ├─{NetworkManager}(845)
 │ └─{NetworkManager}(849)
 ├─VGAuthService(702)
 ├─abrt-watch-log(737)
 ├─abrt-watch-log(742)
 ├─abrtd(726)
 ├─accounts-daemon(725)─┬─{accounts-daemon}(749)
 │ └─{accounts-daemon}(751)
 ├─alsactl(743)
 ├─at-spi-bus-laun(1916)─┬─dbus-daemon(1921)
 │ ├─{at-spi-bus-laun}(1917)
 │ ├─{at-spi-bus-laun}(1918)
 │ └─{at-spi-bus-laun}(1920)
 ├─at-spi2-registr(1924)─┬─{at-spi2-registr}(1925)
...

2、pidof命令查看运⾏进程的pid

【例2】查看正在运⾏的httpd进程,有哪些pid

[root@magedu ~]# pidof httpd
2026 2025 2024 2022 2021 1471

注意:运⾏的程序会在/proc⽬录下,以pid为⽬录名称⾃动⽣成⽬录。

3、ps命令

【例3】显⽰当前终端运⾏的进程

[root@magedu ~]# ps
   PID TTY          TIME CMD
  8812 pts/1    00:00:00 bash
  8852 pts/1    00:00:00 ps

【例4】显⽰所有⽤户在所有终端上运⾏的前台进程

[root@magedu ~]# ps a
   PID TTY      STAT   TIME COMMAND
  6818 tty1     Ssl+   0:01 /usr/bin/X :0 -background none -noreset -audit 4 -v
  8278 pts/0    Ss+    0:00 bash
  8812 pts/1    Ss     0:00 -bash
  8865 pts/1    R+     0:00 ps a

【例5】显⽰⽤户名

[root@magedu ~]# ps u
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root       6818  1.2  2.0 327348 40872 tty1     Ssl+ 23:45   0:01 /usr/bin/X :0
root       8278  0.0  0.1 116348  3100 pts/0    Ss+  23:45   0:00 bash
root       8812  0.0  0.1 116224  2852 pts/1    Ss   23:46   0:00 -bash
root       8866  0.0  0.0 155360  1884 pts/1    R+   23:47   0:00 ps u

【例6】显⽰当前⽤户所运⾏的所有进程,包括前台和后台守护进程

[root@magedu ~]# ps x
   PID TTY      STAT   TIME COMMAND
     1 ?        Ss     0:01 /usr/lib/systemd/systemd --switched-root --system -
     2 ?        S      0:00 [kthreadd]
     3 ?        S      0:00 [ksoftirqd/0]
     4 ?        S      0:00 [kworker/0:0]
     5 ?        S<     0:00 [kworker/0:0H]
...

【例7】ps常⽤组合之⼀:aux

[root@magedu ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.8  0.3 128308  7024 ?        Ss   23:44   0:01 /usr/lib/syst
root          2  0.0  0.0      0     0 ?        S    23:44   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    23:44   0:00 [ksoftirqd/0]
...

【例8】ps常⽤组合之⼀:-eF


```csharp
[root@magedu ~]# ps -eF
UID         PID   PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
root          1      0  0 32077  7024   0 23:44 ?        00:00:01 /usr/lib/syst
root          2      0  0     0     0   1 23:44 ?        00:00:00 [kthreadd]
root          3      2  0     0     0   0 23:44 ?        00:00:00 [ksoftirqd/0]
...

【例9】显⽰进程的占⽤cpu百分⽐、内存使⽤百分⽐、pid、执⾏的命令,并以cpu排序

[root@magedu ~]# ps axo %cpu,%mem,pid,comm --sort -%cpu |head -11
%CPU %MEM    PID COMMAND
 1.3  8.6   7782 gnome-shell
 0.4  0.3      1 systemd
 0.4  2.0   6818 X
 0.3  0.1   6157 rngd
 0.2  0.3   3032 systemd-udevd
 0.2  2.6   8066 gnome-software
 0.1  0.0      9 rcu_sched
 0.1  0.2   6158 dbus-daemon
 0.1  0.7   6173 polkitd
 0.1  1.4   6270 firewalld

4、nice命令在程序运⾏之前指定调度优先级

【例10】运⾏命令时,指定nice值

[root@magedu ~]# nice -n -20 ping 172.18.0.1
[root@magedu ~]# ps axo nice,comm|grep ping
-20 ping

5、renice命令指定正在运⾏的程序的优先级

【例11】指定正在运⾏的ping程序的优先级为-20

[root@magedu ~]# ps axo nice,comm|grep ping
 0 ping
[root@magedu ~]# renice -n -20 $(pidof ping)
5676 (process ID) old priority 0, new priority -20
[root@magedu ~]# ps axo nice,comm|grep ping
-20 ping

6、pgrep命令搜索进程

【例12】查询指定⽤户或UID所运⾏的所有进程的pid和进程名

[root@magedu ~]# pgrep -lu root
1 systemd
2 kthreadd
3 ksoftirqd/0
5 kworker/0:0H
7 migration/0
8 rcu_bh
9 rcu_sched
....

或:

[root@magedu ~]# pgrep -lu 0

【例13】显⽰指定终端上运⾏的进程和pid

[root@magedu ~]# pgrep -lt pts/1
5000 bash

【例14】显⽰进程pid的⼦进程pid

[root@magedu ~]# pgrep -P 1
475
496
508
677
702
703
704
...

7、uptime命令显⽰当前时间、系统启动时间、当前在线⼈数、系统平均负载 【例15】显⽰当前系统负载

[root@magedu ~]# uptime
 23:37:32 up 2:34, 2 users, load average: 0.00, 0.02, 0.05

8、top命令实现进程管理,有很多⼦命令 【例16】显⽰当前系统的进程

[root@magedu ~]# top
top - 23:54:38 up 9 min,  3 users,  load average: 0.01, 0.19, 0.21
Tasks: 218 total,   1 running, 217 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 s
KiB Mem :  1978964 total,   673396 free,   645768 used,   659800 buff/cache
KiB Swap:  4194300 total,  4194300 free,        0 used.  1101692 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND  
  8945 root      20   0  162012   2336   1588 R   0.3  0.1   0:00.10 top      
     1 root      20   0  128308   7024   4212 S   0.0  0.4   0:01.96 systemd  
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kthreadd 
     3 root      20   0       0      0      0 S   0.0  0.0   0:00.18 ksoftirq+
     5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/+
     6 root      20   0       0      0      0 S   0.0  0.0   0:00.06 kworker/+
     7 root      rt   0       0      0      0 S   0.0  0.0   0:00.03 migratio+
     8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh   
...

在此基础上,显⽰按cpu占⽤百分⽐排序:按P

top - 23:56:11 up 11 min,  3 users,  load average: 0.00, 0.14, 0.19
Tasks: 218 total,   1 running, 217 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 s
KiB Mem :  1978964 total,   669556 free,   649624 used,   659784 buff/cache
KiB Swap:  4194300 total,  4194300 free,        0 used.  1097852 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND  
  8808 root      20   0  160848   5600   4248 S   0.3  0.3   0:00.21 sshd     
     1 root      20   0  128308   7024   4212 S   0.0  0.4   0:01.96 systemd  
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kthreadd 
...

在此基础上,显⽰按内存占⽤百分⽐排序:按M

top - 23:57:48 up 13 min,  3 users,  load average: 0.00, 0.10, 0.17
Tasks: 218 total,   1 running, 217 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.2 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 s
KiB Mem :  1978964 total,   665396 free,   653784 used,   659784 buff/cache
KiB Swap:  4194300 total,  4194300 free,        0 used.  1093692 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND  
  7782 root      20   0 3492456 176660  63488 S   0.0  8.9   0:05.04 gnome-sh+
  8066 root      20   0 1433288  53128  20224 S   0.0  2.7   0:01.01 gnome-so+
  6818 root      20   0  327348  40872  21008 S   0.0  2.1   0:01.68 X        
  6270 root      20   0  358192  29164   7028 S   0.0  1.5   0:00.64 firewalld
...

在此基础上,显⽰按累计占据cpu时长排序:按T

top - 23:59:19 up 14 min,  3 users,  load average: 0.00, 0.07, 0.15
Tasks: 218 total,   1 running, 217 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.2 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 s
KiB Mem :  1978964 total,   665320 free,   653860 used,   659784 buff/cache
KiB Swap:  4194300 total,  4194300 free,        0 used.  1093616 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND  
  7782 root      20   0 3492456 176660  63488 S   0.0  8.9   0:05.06 gnome-sh+
     1 root      20   0  128308   7024   4212 S   0.0  0.4   0:01.96 systemd  
  6818 root      20   0  327348  40872  21008 S   0.0  2.1   0:01.68 X        
  6157 root      20   0   90392   3200   2340 S   0.0  0.2   0:01.26 rngd   

9、vmstat命令显⽰虚拟内存统计

【例17】显⽰当前系统虚拟内存统计情况

[root@magedu ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  0      0 662576   2124 659256    0    0   315     8  103  176  1  2 96  1  0

10、iostat命令显⽰统计cpu和设备IO信息

【例18】显⽰当前系统的cpu和io信息

[root@magedu ~]# iostat
Linux 3.10.0-957.el7.x86_64 (magedu.com) 	03/28/2019 	_x86_64_	(2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.76    0.02    1.56    1.11    0.00   96.55

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
scd0              0.03         1.08         0.00       1050          0
sda              13.09       598.13        15.75     581353      15304

【例19】显⽰当前系统的cpu和io信息,要求每隔2秒显⽰⼀次,⼀个显⽰3次

[root@magedu ~]# iostat 2 3
Linux 3.10.0-957.el7.x86_64 (centos7.localdomain) 	03/28/2022 	_x86_64_	(2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.68    0.02    1.40    0.99    0.00   96.91

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
scd0              0.03         0.96         0.00       1050          0
sda              11.69       532.55        14.25     581457      15563

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.00    0.00    0.00    0.00    0.00  100.00

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
scd0              0.00         0.00         0.00          0          0
sda               0.00         0.00         0.00          0          0

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.25    0.00    0.50    0.00    0.00   99.25

Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
scd0              0.00         0.00         0.00          0          0
sda               0.00         0.00         0.00          0          0

11、pmap命令显⽰⼀个进程pid的内存映射

【例20】显⽰pid为1471进程的内存映射情况

[root@magedu ~]# pmap -x 1471
1471: /usr/sbin/httpd -DFOREGROUND
Address 			Kbytes 		RSS		Dirty 		Mode	 Mapping
000055ab4bd61000 	484 		 20 		0 		r-x-- 	 httpd
000055ab4bfda000 	 12 		 12 	   12 		r---- 	 httpd
000055ab4bfdd000 	  8 		  8 		8 		rw--- 	 httpd
000055ab4bfdf000 	 12 		  8 		8 		rw--- 	 [ anon ]
000055ab4dc03000 	904 		888 	  888 		rw--- 	 [ anon ]
00007f04aa9e3000 	 72 		 52 		0 		r-x-- 	 libnss_myhostname.so.2
...

12、glances命令获取远程主机的系统信息

【例21】本地获取远程主机的系统信息

本地主机ip为:172.18.118.87
远程主机ip为:172.18.118.89

安装glances:glances在epel源就有,所以安装很简单,配置好epel源就可以使用yum安装了。

#下载安装epel源
[root@centos7 ~]# wget https://mirrors.aliyun.com/epel/7/x86_64/Packages/e/epel-release-7-14.noarch.rpm
[root@centos7 ~]# rpm -ivh epel-release-7-14.noarch.rpm 
[root@centos7 ~]# yum makecache 
[root@centos7 ~]# yum install glances 

在远程主机上开启glances代理:

[root@magedu ~]# glances -sB 172.18.118.89

在本地监控远程主机的系统信息:

[root@magedu ~]# glances -c 172.18.118.89

13、dstat命令显⽰系统资源信息,代替vmstat和iostat

【例21】显⽰本地程主机的系统信息

[root@magedu ~]# dstat
You did not select any stats, using -cdngy by default.
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read writ| recv send| in out | int csw 
 0 0 99 0 0 0| 30k 7704B| 0 0 | 28B 48B| 208 244 
 0 0 100 0 0 0| 0 0 | 60B 890B| 0 0 | 210 248 
 0 0 100 0 0 0| 0 0 | 560B 406B| 0 0 | 182 224 
 0 1 99 0 0 0| 0 0 | 620B 346B| 0 0 | 196 230 
 0 0 100 0 0 0| 0 0 | 538B 406B| 0 0 | 205 229 
 0 0 100 0 0 0| 0 52k| 712B 346B| 0 0 | 234 263 q
 1 0 99 0 0 0| 0 0 | 600B 512B| 0 0 | 220 250 
 0 1 99 0 0 0| 0 0 |1161B 346B| 0 0 | 228 247

14、kill命令向进程⽅式控制信号

【例22】中⽌ping命令的进程

[root@magedu ~]# pidof ping
10411
[root@magedu ~]# kill -2 10411

注意:此⽅式等同于ctrl + c 【例23】直接杀死ping命令的进程

[root@magedu ~]# pidof ping
10411
[root@magedu ~]# kill -15 10411

注意:默认不指明信号,就是执⾏信号15。 【例24】强制杀死ping命令的进程

[root@magedu ~]# pidof ping
10411
[root@magedu ~]# kill -9 10411

【例25】将ping命令的进程放⼊后台休眠

[root@magedu ~]# kill -19 $(pidof ping)

注意:此命令相当于ctrl + z。 【例26】将休眠的ping命令的进程放⼊前台执⾏

[root@magedu ~]# kill -18 $(pidof ping)

注意:此命令相当于fg


实验⼆:作业管理

⽬的

掌握把作业放到后台、把后台作业调度到前台运行、查看作业等。

前提

可用的centos7系统,连接物理网络。

命令介绍

1、ctrl + z组合命令使前台进程暂停到后台

【例27】把ping命令进程暂停放到后台

[root@magedu ~]# ping 172.18.0.1
PING 172.18.0.1 (172.18.0.1) 56(84) bytes of data.
64 bytes from 172.18.0.1: icmp_seq=1 ttl=64 time=0.800 ms
64 bytes from 172.18.0.1: icmp_seq=2 ttl=64 time=0.421 ms
64 bytes from 172.18.0.1: icmp_seq=3 ttl=64 time=0.329 ms
64 bytes from 172.18.0.1: icmp_seq=4 ttl=64 time=0.465 ms
^Z
[1]+ Stopped ping 172.18.0.1

2、fg命令把后台进程调度到前台继续执⾏

【例28】将刚刚放⼊后台的pin命令进程调度到前台继续执⾏

[root@magedu ~]# fg
ping 172.18.0.1
64 bytes from 172.18.0.1: icmp_seq=5 ttl=64 time=0.336 ms
64 bytes from 172.18.0.1: icmp_seq=6 ttl=64 time=0.313 ms
64 bytes from 172.18.0.1: icmp_seq=7 ttl=64 time=0.491 ms
64 bytes from 172.18.0.1: icmp_seq=8 ttl=64 time=0.393 ms
....

3、bg命令把后台暂停的ping命令进程在后台继续执⾏

【例29】把后台暂停ping命令进程在后台继续执⾏起来

[root@magedu ~]# bg
[1]+ ping 172.18.0.1 &
64 bytes from 172.18.0.1: icmp_seq=4 ttl=64 time=1.95 ms
...

4、jobs命令查看

【例30】查看后台的所有进程

 [root@magedu ~]# jobs
[1]- Stopped ping 172.18.0.1
[2]+ Stopped vim test.py

注意:中括号中的数⼦代表作业号,可以使⽤fg+进程的作业号,选择指定该作业调度到前台执⾏,默认不写作业号是把带 +号的作业调度前台执⾏。 【例31】把作业号为2的进程调度到前台执⾏

[root@magedu ~]# fg 2

5、实现关闭终端后,进程继续执⾏,多种⽅式

【例32】关闭终端后,进程继续执⾏: ⽅式⼀ 先在前台运⾏,然后ctrl+z暂停到后台,再⽤bg将后台暂停的进程使其在后台继续运⾏。

[root@magedu ~]# vim test.sh
#!/bin/bash
n=0
while true;do
echo $n >> /tmp/magetest.txt
let n++
sleep 0.5
done

[root@magedu ~]# ./test.sh

执⾏组合命令:

ctrl+z

在后台使其继续运⾏:

[root@magedu ~]# bg

关闭该终端窗⼝,再新终端窗⼝查看:

[root@magedu ~]# ps aux |grep test.sh

【例33】关闭终端后,进程继续执⾏:⽅式⼆

[root@magedu ~]# ./test.sh &

关闭终端,新打开终端窗口查看。 【例34】关闭终端后,进程继续执⾏:⽅式三

[root@magedu ~]# nohup ./test.sh &> /dev/null &

可以关闭终端,打开新的终端窗⼝验证,注意可以使⽤screen命令实现此功能。 6、并⾏执⾏,多种⽅式 【例35】并⾏执⾏3个shell脚本:⽅式⼀

[root@magedu ~]# vim all.sh
/app/bin/test1.sh &
/app/bin/test2.sh &
/app/bin/test2.sh &

【例36】并⾏执⾏3个shell脚本:⽅式⼆

[root@magedu ~]# (./test1.sh &);(./test2.sh &);(./test3.sh &)

【例37】并⾏执⾏3个shell脚本:⽅式三

[root@magedu ~]# { ./test1.sh & ./test2.sh & ./test3.sh & }

实验三:计划任务

⽬的

掌握at命令实现一次性计划任务和crontab命令实现周期性计划任务。

前提

可用的centos7系统,连接物理网络。

命令介绍

1、at命令设置⼀次性计划任务

【例1】设定当前时间的20:05执⾏wall hello

[root@magedu ~]# at 20:05
at> wall hello
at> <EOT>
job 7 at Mon Jul 9 20:05:00 2018

注意:按ctrl+d结束设置。如果设定的时间是当前已经过去了,则表⽰第⼆天的时间。 查看⼀次性任务列表:

[root@magedu ~]# at -l
7 Mon Jul 9 20:05:00 2018 a root

查看时间,验证:

[root@magedu ~]# date
Mon Jul 9 20:04:45 CST 2018
[root@magedu ~]# 
Broadcast message from root@magedu.com (Mon Jul 9 20:05:00 2018):
hello
[root@magedu ~]# at -l

此时,一次性任务执行完毕后,列表为空。

【例2】查看⼀次性任务

[root@magedu ~]# at -l
9 Mon Jul 9 20:20:00 2018 a root

查看具体⼀次性的任务的内容:

 [root@magedu ~]# at -c 9
 #!/bin/sh
 # atrun uid=0 gid=0
 # mail root 0
 umask 22
 XDG_SESSION_ID=2; export XDG_SESSION_ID
 HOSTNAME=magedu.com; export HOSTNAME
 SHELL=/bin/bash; export SHELL
 HISTSIZE=1000; export HISTSIZE
 SSH_CLIENT=172.18.116.232\ 51435\ 22; export SSH_CLIENT
 OLDPWD=/root/py3; export OLDPWD
 SSH_TTY=/dev/pts/1; export SSH_TTY
 USER=root; export USER
 
LS_COLORS=rs=0:di=01\;34:ln=01\;36:mh=00:pi=40\;33:so=01\;35:do=01\;35:bd=40\;33\;01:cd=40\
;33\;01:or=40\;31\;01:mi=01\;05\;37\;41:su=37\;41:sg=30\;43:ca=30\;41:tw=30\;42:ow=34\;42:s
t=37\;44:ex=01\;32:\*.tar=01\;31:\*.tgz=01\;31:\*.arc=01\;31:\*.arj=01\;31:\*.taz=01\;31:\*
.lha=01\;31:\*.lz4=01\;31:\*.lzh=01\;31:\*.lzma=01\;31:\*.tlz=01\;31:\*.txz=01\;31:\*.tzo=0
1\;31:\*.t7z=01\;31:\*.zip=01\;31:\*.z=01\;31:\*.Z=01\;31:\*.dz=01\;31:\*.gz=01\;31:\*.lrz=
01\;31:\*.lz=01\;31:\*.lzo=01\;31:\*.xz=01\;31:\*.bz2=01\;31:\*.bz=01\;31:\*.tbz=01\;31:\*.
tbz2=01\;31:\*.tz=01\;31:\*.deb=01\;31:\*.rpm=01\;31:\*.jar=01\;31:\*.war=01\;31:\*.ear=01\
;31:\*.sar=01\;31:\*.rar=01\;31:\*.alz=01\;31:\*.ace=01\;31:\*.zoo=01\;31:\*.cpio=01\;31:\*
.7z=01\;31:\*.rz=01\;31:\*.cab=01\;31:\*.jpg=01\;35:\*.jpeg=01\;35:\*.gif=01\;35:\*.bmp=01\
;35:\*.pbm=01\;35:\*.pgm=01\;35:\*.ppm=01\;35:\*.tga=01\;35:\*.xbm=01\;35:\*.xpm=01\;35:\*.
tif=01\;35:\*.tiff=01\;35:\*.png=01\;35:\*.svg=01\;35:\*.svgz=01\;35:\*.mng=01\;35:\*.pcx=0
1\;35:\*.mov=01\;35:\*.mpg=01\;35:\*.mpeg=01\;35:\*.m2v=01\;35:\*.mkv=01\;35:\*.webm=01\;35
:\*.ogm=01\;35:\*.mp4=01\;35:\*.m4v=01\;35:\*.mp4v=01\;35:\*.vob=01\;35:\*.qt=01\;35:\*.nuv
=01\;35:\*.wmv=01\;35:\*.asf=01\;35:\*.rm=01\;35:\*.rmvb=01\;35:\*.flc=01\;35:\*.avi=01\;35
:\*.fli=01\;35:\*.flv=01\;35:\*.gl=01\;35:\*.dl=01\;35:\*.xcf=01\;35:\*.xwd=01\;35:\*.yuv=0
1\;35:\*.cgm=01\;35:\*.emf=01\;35:\*.axv=01\;35:\*.anx=01\;35:\*.ogv=01\;35:\*.ogx=01\;35:\
*.aac=01\;36:\*.au=01\;36:\*.flac=01\;36:\*.mid=01\;36:\*.midi=01\;36:\*.mka=01\;36:\*.mp3=
01\;36:\*.mpc=01\;36:\*.ogg=01\;36:\*.ra=01\;36:\*.wav=01\;36:\*.axa=01\;36:\*.oga=01\;36:\
*.spx=01\;36:\*.xspf=01\;36:; export LS_COLORS
 PYENV_VIRTUALENV_INIT=1; export PYENV_VIRTUALENV_INIT
 MAIL=/var/spool/mail/root; export MAIL
 PATH=/root/.pyenv/plugins/pyenvvirtualenv/shims:/root/.pyenv/shims:/root/.pyenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sb
in:/usr/bin:/root/bin; export PATH
 PWD=/root; export PWD
 LANG=en_US.UTF-8; export LANG
 PS1=[\\u@\\h\ \\W]\\\$\ ; export PS1
 HISTCONTROL=ignoredups; export HISTCONTROL
 PYENV_SHELL=bash; export PYENV_SHELL
 SHLVL=1; export SHLVL
 HOME=/root; export HOME
 LOGNAME=root; export LOGNAME
 
XDG_DATA_DIRS=/root/.local/share/flatpak/exports/share/:/var/lib/flatpak/exports/share/:/us
r/local/share/:/usr/share/; export XDG_DATA_DIRS
 SSH_CONNECTION=172.18.116.232\ 51435\ 172.18.118.87\ 22; export SSH_CONNECTION
 LESSOPEN=\|\|/usr/bin/lesspipe.sh\ %s; export LESSOPEN
 XDG_RUNTIME_DIR=/run/user/0; export XDG_RUNTIME_DIR
 cd /root || {
 echo 'Execution directory inaccessible' >&2
 exit 1
 }
 ${SHELL:-/bin/sh} << 'marcinDELIMITER2dcad294'
 wall tiemout
 
 marcinDELIMITER2dcad294

【例3】删除⼀个⼀次性任务 删除前查看任务列表:

[root@magedu ~]# at -l
10 Thu Jul 12 20:00:00 2018 a root
11 Thu Jul 12 20:10:00 2018 a root

删除第11号任务:

[root@magedu ~]# at -d 11

删除后查看任务列表:

[root@magedu ~]# at -l
10 Thu Jul 12 20:00:00 2018 a root

【例4】设置2分钟后,执⾏wall hello

[root@magedu ~]# at now+2 minutes
at> wall hello
at> <EOT>
job 7 at Mon Jul 9 20:05:00 2018

注意:按ctrl+d结束设置。 【例5】设置明天8点,执⾏wall hello

[root@magedu ~]# at 8:00 tomorrow
at> wall hello
at> <EOT>
job 7 at Mon Jul 10 8:00:00 2018

【例6】设置后天8点,执⾏wall hello

[root@magedu ~]# at 8:00 +2 days
at> wall hello
at> <EOT>
job 7 at Mon Jul 11 8:00:00 2018

【例7】设置2018年7⽉25⽇,8点,执⾏wall hello

[root@magedu ~]# at 8:00 2018-7-25
at> wall hello
at> <EOT>
job 7 at Mon Jul 25 8:00:00 2018

【例8】禁⽌指定⽤户magedu使⽤at命令进⾏⼀次性任务设置

[root@magedu ~]# vim /etc/at.deny 
magedu

注意:默认/etc/at.deny⽂件表⽰为黑名单模式;还可以使⽤⽩名单/etc/at.allow,默认此⽂件不存在,需要⼿动创建; 只要有⽩名单/etc/at.allow⽂件存在,黑名单⽂件就失效;⽩名单⽂件同理,只要把⼀个⽤户名写在该⽂件中的⼀⾏,就 只允许这个⽤户使⽤at命令执⾏⼀次性计划任务了。 at⼀次性计划任务保存在/var/spool/at/⽬录下。

2、crontab命令设置周期性性计划任务

时间格式是:分 时 日 月 周

【例9】每周⼀、三、五早上8点,执⾏wall good morning

[root@magedu ~]# crontab -e

最后⼀⾏添加:

00 08 * * 1,3,5 /usr/bin/wall "good morning!"

【例10】每5分钟向时间服务器同步⼀次时间

[root@magedu ~]# crontab -e

最后⼀⾏添加:

5 * * * * ntpdate ntp.api.bz >/dev/null

【例11】查看crontab计划列表

[root@magedu ~]# crontab -l
00 08 * * 1,3,5 /usr/bin/wall "good morning!"
5 * * * * ntpdate ntp.api.bz >/dev/null

【例12】每天晚上9点半关机

[root@magedu ~]# crontab -e

最后⼀⾏添加:

30 21 * * * /usr/sbin/poweroff

【例13】每⽉1⽇的15点到17点,每隔10分钟,执⾏⼀次echo hello命令

[root@magedu ~]# crontab -e

最后⼀⾏添加:

*/10 15-17 1 * * /usr/bin/echo "hello"

注意:crontab命令创建的⽤户⾃定义的周期性计划任务,实际是保存在/var/spool/cron/root⽂件⾥。