目录
作业和进程的概念
Linux是一个多用户多任务的操作系统。
多用户是指多个用户可以在同一时间使用计算机系统; 多任务是指Linux可以同时执行几个任务,它可以在还未执行完一个任务时又执行另一项任务。
为了完成这些任务,系统上同时运行着多个进程,正在执行的一个或多个相关进程称为一个作业。
程序与进程的关系
程序: 保存在硬盘、光盘等介质中的可执行代码和数据 是静态保存的代码。
进程:在CPU及内存中运行的程序代码 是动态执行的代码 父、子进程:每个进程可以创建一个或多个进程。
进程与程序是有区别的进程不是程序,虽然它由程序产生。程序只是一个静态的指令集合,不占系统的运行资源:而进程是一个随时都可能发生变化的、动态的、使用系统运行资源的程序。而且一个程序可以启动多个进程。
进程:程序的动态执行过程;一个程序可以有多个进程;一个或多个相关进程有时也被称作一个作业
查看进程信息------ps,top
ps命令
用途:显示正在执行的进程统计信息
格式:常用:ps [选项]
常用命令选项
- -A
- -a:终端上的所有进程
- -e:系统中的所有进程
- -l:长格形式
- -u:面向用户的格式
- -x:后台进程的信息
PID:该进程在系统中的数字ID号,在当前系统中是唯一的;
top命令
用途:查看动态的进程排名信息
设置进程的优先级------nice,renice
nice命令
是反应一个进程优先级状态的值,取值范围是-20至19,一共40个级别。 这个值越小,表示进程"优先级"越高,而值越大"优先级"越低。
直接运行nice,显示当前程序的运行优先级;
格式:nice [-优先级] 命令
#nice
#0
#nice -n 21 nice
#19
#nice -5 ftp #调整ftp进程的优先级为5
#nice --5 ftp #调整ftp进程的优先级为-5
renice命令
对一个正在运行的进程进行nice值的调整。
格式:renice 优先级值 [选项] 命令
常用命令选项
- -p:进程号所标识进程的优先级
- -u:指定用户所启动进程的优先级
- -g:群组
renice 8 -p 2896
查看进程信息------pgrep,pstree
pgrep命令
用途:根据特定条件查询进程PID信息
[root@localhost ~]# pgrep "init"
1
[root@localhost ~]# pgrep -l "log"
2538 syslogd
2541 klogd
3221 login
pstree命令
用途:以树型结构显示各进程间的关系
[root@localhost ~]# pstree -aup
init,1
├─acpid,2866
├─atd,3060
├─auditd,2516
│ ├─python,2518 /sbin/audispd
│ └─{auditd},2517
├─automount,2842 ......
切换进程------jobs,bg,fg
显示作业命令
jobs -p 进程号
jobs -l 进程号+作业号
ctrl+Z 挂起当前作业
ctrl+C 终止当前作业
前台、后台作业
前台和后台运行作业作业可以在前台,也可以在后台运行,在同时间只能有一个作业在前台运行。前台作业是指正对它进行交互操作的作业,它从键盘接受输入,并将输出送往屏幕。另一方面,后台作业不接受中断的输入。它们在运行时不需要交互操作,只是默默运行。
bg [作业号] #前台→后台
fg [作业号] #后台→前台
将一个作业放到后台运行的一种方法是在命令后面加"&"字符,ex:$ yes >/dev/null &
终止进程------kill
kill -s 信号| -p 进程号
kill -l [信号]
kill 进程号
kill -9 用于强制终止
当使用作业号来标识作业时,在作业号前面要加"%" 。若该作业的作业号为1,可用下面的命令
$ ki11 %1
kill用于终止指定PID号的进程
killall用于终止指定名称的所有进程
计划任务管理------at
在指定的日期、时间点自动执行预先设置的一些命令操作,属于一次性计划任务
服务脚本名称:/etc/init.d/atd
设置格式:at [HH:MM] [yyyy-mm-dd]
[root@localhost ~]# service atd start
启动 atd: [确定]
[root@localhost ~]# at 23:45
at> shutdown -h now
at> <EOT>
job 1 at 2009-09-14 23:45 # 按Ctrl+D键提交任务
[root@localhost ~]# atq 1
2009-09-14 23:45 a root
计划任务管理------crontab
按照预先设置的时间周期(分钟、小时、天......)重复执行用户指定的命令操作,属于周期性计划任务
管理cron计划任务
编辑计划任务:crontab -e [-u 用户名]
查看计划任务:crontab -l [-u 用户名]
删除计划任务:crontab -r [-u 用户名]
ex:
[root@localhost root]# crontab -l -u jerry
55 23 * * 7 /bin/cp /etc/passwd /home/jerry/pwd.txt
[root@localhost root]# crontab -r -u jerry
[root@localhost root]# crontab -l -u jerry
no crontab for jerry
crontab任务的配置格式
时间数值的特殊表示方法
- * 表示该范围内的任意时间
- , 表示间隔的多个不连续时间点
- - 表示一个连续的时间范围
- / 指定间隔的时间频率
应用示例
0 17 * * 1-5 周一到周五每天17:00
30 8 * * 1,3,5 每周一、三、五的8点30分
0 8-18/2 * * * 8点到18点之间每隔2小时
0 * */3 * * 每隔3天
添加crontab调度
vi crontab -e
00 17 * * 5 tar -czf /home/hellon/data /backup/hellen-data.tar.gz
示例1(root用户):
每天早上7:50自动开启sshd服务,22点50时关闭
50 7 * * * systemctl start sshd
50 22 * * * systemctl stop sshd
每隔5天清空一次FTP服务器公共目录/var/ftp/pub
* * */5 * * rm -rf /var/ftp/pub/*
每周六的7:30时,重新启动httpd服务
30 7 * * 6 restart httpd
每周一、三、五的17:30时,打包备份/etc/httpd目录
30 17 * * 1,3,5 tar -zcvf /backup/httpd_backup_$(date +\%Y\%m\%d).tar.gz /etc/httpd
示例2(jerry用户):
每周日晚上23:55时将"/etc/passwd"文件的内容复制到宿主目录中,保存为pwd.txt文件
55 23 * * 7 cp /etc/passwd /home/jerry/pwd.txt