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

本文详细介绍了Linux系统中手动启动进程(包括前台和后台操作、进程切换、并行执行)、结束进程(kill、killall和pkill命令)以及计划任务(一次性任务at和周期性任务crontab的设置与操作)。
摘要由CSDN通过智能技术生成

目录

一、手动启动进程

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 &


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

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

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

4、结束进程

1、kill 

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

2、周期性计划任务

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

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

书写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`

补充:

特殊字符的含义
项目含义范围
第一个"*"一小时当中的第几分钟(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

3、补充一点

实操修改了配置文件/etc/crontab文件,也是可以设置计划任务的,但是

①需要完全按照格式,需要指定用户

②不能使用命令crontab -l查看任务

所以建议不要使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维菜鸟XY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值