【Linux】补充:进程管理之手动控制进程,以及计划任务

目录

一、手动启动进程

1、理解前台启动与后台启动

2、如何完成前台启动后台启动的切换

3、完成并行执行多个任务

4、结束进程

1、kill 

2、killall

2、pkill

二、计划任务

1、at一次性计划任务

2、实操

2、周期性计划任务

1、关于设置周期性任务的配置文件以及格式

2、设置周期性任务的方法以及命令

实操案例:14点每分钟创建一个在同名时间文件名


一、手动启动进程

1、理解前台启动与后台启动

前台启动:通过终端启动,且启动后一直占据终端,终端不可以干别的事

后台启动:可通过终端启动,但启动后即转入后台运行(释放终端),终端可以干别的事

两者可以切换

2、如何完成前台启动后台启动的切换

采用“命令&”可以将进程放到后台执行

##命令dd &将其放到后台执行,并给到一个进程pid号
[root@localhost opt]#dd if=/dev/zero of=/opt/bigfile &
[1] 13991


##查看当前后台的任务状态:jobs
[root@localhost opt]#jobs 
[1]+  运行中               dd if=/dev/zero of=/opt/bigfile &



##查看当前后台的任务状态以及pid号:jobs -l
[root@localhost opt]#jobs -l
[1]+ 13991 运行中               dd if=/dev/zero of=/opt/bigfile &


##将后台的任务放到前台运行:fg +任务的序号
[root@localhost opt]#fg 1
dd if=/dev/zero of=/opt/bigfile
^Z
[1]+  已停止               dd if=/dev/zero of=/opt/bigfile

###ctrl + z将前台的任务停止并挂起,处于停止,但是还在


##看下任务的状态区别
[root@localhost opt]#jobs
[1]+  已停止               dd if=/dev/zero of=/opt/bigfile


##再次启动挂起的任务 :bg +任务序号
[root@localhost opt]#bg 1
[1]+ dd if=/dev/zero of=/opt/bigfile &


##再看一下状态
[root@localhost opt]#jobs 
[1]+  运行中               dd if=/dev/zero of=/opt/bigfile &


【Linux】补充:进程管理之手动控制进程,以及计划任务_第1张图片

3、完成并行执行多个任务

比如想要同时与三台主机ping

ping 127.0.0.1 & ping www.baidu.com & ping  192.168.20.10 &

4、结束进程

1、kill 

号代号 信号名称 说 明
0 EXIT 程序退出时收到该信息。
1 HUP 该信号让进程立即关闭.然后重新读取配置文件之后重启
2 INT 程序中止信号,用于中止前台进程。相当于输出 Ctrl+C 快捷键
3 QUIT 退出
8 FPE 在发生致命的算术运算错误时发出。不仅包括浮点运算错误,还包括溢出及除数为 0 等其他所有的算术运算错误
9 KILL 用来立即结束程序的运行。本信号不能被阻塞、处理和忽略。般用于强制中止进程
14 ALRM 时钟定时信号,计算的是实际的时间或时钟时间。alarm 函数使用该信号
15 TERM 正常结束进程的信号,kill 命令的默认信号。如果进程已经发生了问题,那么这 个信号是无法正常中止进程的,这时我们才会尝试 SIGKILL 信号,也就是信号 9
18 CONT 该信号可以让暂停的进程恢复执行。本信号不能被阻断
19 STOP 该信号可以暂停前台进程,相当于输入 Ctrl+Z 快捷键。本信号不能被阻断

2、killall

命令不再依靠 PID 来杀死单个进程,而是通过程序的进程名来杀死一类进程,比如杀死ping 

把与ping相关的进程全部杀死:killall  ping

2、pkill

 pkill [-t 终端号] 进程名
 
-U:根据进程所属的用户名终止相应进程
-t:根据进程所在的终端终止相应进程
-SIGNAL
-u uid: effective user,生效者
-U uid: real user,真正发起运行命令者   ##pkill -U zhangsan  把zhangsan用户清退
-t terminal: 与指定终端相关的进程
-l: 显示进程名(pgrep可用)
-a: 显示完整格式的进程名(pgrep可用)
-P pid: 显示指定进程的子进程




w
#使用w命令查询本机已经登录的用户
pkill -9 -t pts/1
#强制杀死从pts/1虚拟终端登陆的进程

二、计划任务

1、at一次性计划任务

  • 由包 at 提供
  • 依赖与atd服务,需要启动才能实现at任务
  • at队列存放在/var/spool/at目录中,ubuntu存放在/var/spool/cron/atjobs目录下
  • 执行任务时PATH变量的值和当前定义任务的用户身份一致

2、实操

##一次性任务的格式
at [xx:xx] [xxx-xx-xx]

#交互第一步,写任务内容
普通命令或者脚本

##提交
ctrl + d 


##查询(这里有个缺点,并不能查看具体的任务)
atq


##删除任务
atrm  任务序号

【Linux】补充:进程管理之手动控制进程,以及计划任务_第2张图片【Linux】补充:进程管理之手动控制进程,以及计划任务_第3张图片

2、周期性计划任务

1、关于设置周期性任务的配置文件以及格式

是由/etc/crontab配置文件,表明了周期性任务的书写格式,这个文件是个全局配置文件,写了以后是可以全局生效的

【Linux】补充:进程管理之手动控制进程,以及计划任务_第4张图片

书写crontab时,需要注意的几项格式:

1、6个选项都不能为空,不确定就用*代替,注意注意,第一项为分钟,这个一定要想清楚,*是每分钟,0是整点,最好具体到时间,要不然就是每分钟执行一次,想清楚需求;

2、最小的单位是分钟,所以精确秒做不到!!

3、在定义时间的时候,注意星期和日期区别,容易混淆;

4、在定任务的时候,注意命令使用绝对路径!!!

2、设置周期性任务的方法以及命令

##方法一:
vim /etc/crontab


##方法二:
crontab命令

crontab -e   #创建周期性计划
crontab -l   #查看当前周期性计划
crontab -r   #删除计划任务  注意,删除的时候一次性全删了!!!
crontab -u 用户名 -e  #针对用户创建周期性任务
选项 功能
 -u 用户名  用来设定某个用户的 crontab 服务,例如 "-u demo" 表示设备 demo 用户的 crontab 服务,此选项一般有 root 用户来运行。
 -e    编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前用户的 crontab 文件。 
 -l   显示某用户的 crontab 文件内容,如果不指定用户,则表示显示当前用户的 crontab 文件内容。 
 -r 

注意;这里删了就全删了,建议用crontab -e进入编辑页面删除单条 

从 /var/spool/cron 删除某用户的 crontab 文件,如果不指定用户,则默认删除当前用户的 crontab 文件。 

 -i   在删除用户的 crontab 文件时,给确认提示。                    

实操案例:14点每分钟创建一个在同名时间文件名

[root@localhost opt]#crontab -l

* 14 * * * /bin/touch  /opt/`date +\%F_\%T`

【Linux】补充:进程管理之手动控制进程,以及计划任务_第5张图片

【Linux】补充:进程管理之手动控制进程,以及计划任务_第6张图片

【Linux】补充:进程管理之手动控制进程,以及计划任务_第7张图片

【Linux】补充:进程管理之手动控制进程,以及计划任务_第8张图片

补充:

特殊字符的含义
项目 含义 范围
第一个"*" 一小时当中的第几分钟(minute) 0~59
第二个"*" 一天当中的第几小时(hour) 0~23
第三个"*" 一个月当中的第几天(day) 1~31
第四个"*" 一年当中的第几个月(month) 1~12
第五个"*" 一周当中的星期几(week) 0~7(0和7都代表星期日)
特殊字符的含义
 特殊符号      含义                                                         
 *(星号)     代表任何时间。比如第一个"*"就代表一小时种每分钟都执行一次的意思。 
 ,(逗号)     代表不连续的时间。比如"0 8,12,16***命令"就代表在每天的 8 点 0 分、12 点 0 分、16 点 0 分都执行一次命令。 
 -(中杠)     代表连续的时间范围。比如"0 5 ** 1-6命令",代表在周一到周六的凌晨 5 点 0 分执行命令。 
 /(正斜线)   代表每隔多久执行一次。比如"*/10****命令",代表每隔 10 分钟就执行一次命令。 

拓展练习:

1、每月的 1号 15号  30号

0  0 1,15,30 * *

2、中午  12点  -  16点 

0  12-16  *  * *

3、每  半小时 执行  一次

30 * * * *

4、每两分钟执行脚本

*/2  *  *  *  *

5、8点到18点之间每2小时  

0 8-18/2  * * *

6、每3天的每个整点

0  0  */3  *  *

7、每个月 1号  ,5 号 ,15号,  30号   下午 3到6点  执行

0  15-16  1,5,15,30 * *

8、每年1-5月每隔10天的上午和下午10点的10-45分内每隔5分钟执行一次

10-45/5  10,22  */10  1-5  *

9、每周五晚上8点整执行

0  20  *   *   5

8、每周日凌晨2点30执行一次

30  2  *  * 0

30  2  *  * 7

你可能感兴趣的:(linux,服务器,运维)