@[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⽂件⾥。