2. linux 下进程管理命令
linux下启动一个进程分为两类:
- 手动启动
- 调度启动(周期性启动)
2.1 atd 服务
atd 服务是一个守护进程,它提供定时的启动一个进程的服务。
2.1.1 查看atd 服务是否开启的命令:
ps -elf | grep atd
2.1.2 启动atd 服务的命令
/etc/init.d/atd start or restart
2.2.3 at 命令(指定时刻执行相关进程)
at 命令是使用atd 服务的命令。
- at + 固定的时间格式:进入到 at模式下,指定在上述指定的时间内要执行的命令(程序)。
- ctrl+d:在at模式下,可以通过 ctrl+d 退出at模式。
- atq:查询当前的等待任务,被执行之后就不会显示。
各种时间格式介绍如下
2.2.3.1 HH:MM YYYY-MM-DD
规定在某年某月的某一天的特殊时刻进行该项任务
at 04:00 2009-03-17
2.3.1.2 HH:MM[am|pm] + number [minutes|hours|days|weeks]
规定在某个时间点再加多少时间后才进行该项任务
at now + 5 minutes
at 04:00pm + 3 days
2.2 cron服务
cron服务是一个守护进程,它提供周期性的启动一个进程的服务。
2.2.1 cron 常用的指令
创建一个任务时,需要在一个编辑器中编辑该任务。
-
select-editor : 修改编辑任务的编辑器。一般选择 2. /usr/bin/vim.basic。即,使用vim编辑器进行编辑。编辑结束后按照vim的退出命令退出即可。
-
crontab -e : 创建一个任务。
-
crontab -u :设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数 。
-
crontab -l :列出某个用户cron服务的详细内容 。
-
crontab -r :删除某个用户的cron服务 。
-
crontab -e :编辑某个用户的cron服务。
2.2.2 编辑任务的规则
* * * * * command
分 时 日 月 周 命令
说明:5个星分别代表一个时间,而command 表示要执行的命令。
5个星的取值如下:
- 第1列表示分钟1~59 每分钟用*或者 */1表示
- 第2列表示小时1~23(0表示0点)
- 第3列表示日期1~31
- 第4列表示月份1~12
- 第5列标识号星期0~6(0表示星期天)
注意:
- 如果写为*, 表示每X。
- 如果想定义间隔,在X后加"/"和间隔的数字。
- "-“代表从某个数字到某个数字,”,"分开几个离散的数字。
2.2.3 应用举例
//每隔一分钟打印一下系统时间 。则在vim中编辑下述内容然后保存退出
*/1 * * * * date >> ~/t.log
//晚上11点到早上7点之间每两个小时,早上八点 打印下述内容。则在vim中编辑下述内容然后保存退出
0 23-7/2,8 * * * echo "Have a good dream" >> /tmp/test.txt
2.3 其它命令
- ps :列出当前那些进程的快照(当前时刻)。
- ps -aux : 列出所有进程
- top:Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。top 的升级版 htop。
- kill -l: 查看系统支持的信号。
- kill -signalnum pid: 向进程发送指定的信号
//向pid=4682的进程发送SIGSTOP信号暂停进程。
kill -19 4682
- nice 指定要执行进程的优先级
//以优先级6来运行a.out
nice -n 6 ./a.out
- renice 优先级 pid :更改指定进程的优先级。
//将9621进程的优先级改为10
renice +10 9621
- jobs:查看当前有多少在后台运行的命令。
- &:运行一个程序时,直接放到后台。 在执行进程的名字的末尾添加。
$ ping 127.0.0.1 > /dev/null &
- Ctrl-Z:将一个正在前台执行的进程放到后台,并且暂停
- fg:将后台中的命令调至前台继续运行。如果后台中有多个命令,可以用 fg N将选中的命令调出,N是通过jobs命令查到的后台正在执行的命令的序号[N] (不是pid)。
- bg:将一个在后台暂停的命令,变成继续执行。如果后台中有多个命令,可以用bg N将选中的命令调出,N是通过jobs命令查到的后台正在执行的命令的序号(不是pid)
注意:
- 系统中运行的每个进程都有一个优先级(亦称“nice 值”),其范围从 -20 (最高优先级)到 19 (最低优先级)。优先级越高,其值越小。默认情况下,进程的优先级是 0 (“基本”调度优先级)。优先级比较大的进程(nice 值比较小,最低到 -20)相对优先级比较小的进程(直到19)将比较频繁地被调度运行,因此就拥有更多的进程周期。一般用户只能降低它们自己进程的优先级别,并限于 0 到 19之间。超级用户(root)可以将任何进程的优先级设定为任何值。top命令中,NI指的就是优先级。
- 没有直接的命令可以将后台running的进程stop,必须要先把后台的进程通过fg调到前台,再用Ctrl+Z挂起后重新放回后台