您的当前位置:首页正文

任务管理(job control)

2024-11-29 来源:个人技术集锦

1. 任务管理

任务管理是用在 bash 环境中的,也就是说【当我们登录系统获取 bash shell 后,再单一终端下同时执行多个任务的操作管理】

执行 bash 的任务管理必须要注意到的限制:

  • 这些任务所触发的进程必须来自于 shell 的子进程(每个任务都是目前bash的子进程)
  • 前台:可以控制与执行命令的环境称为前台的任务
  • 后台:可自动执行的任务,无法使用 [Ctrl]+c 终止它,可使用bg、fg调用该任务
  • 后台中(bash的后台并非系统后台)执行的进程不能等待 terminal 或 shell 的输入

1.1 job control 的管理

1.1.0 使用 & 直接将命令丢到后台中运行

[root@study ~] tar -zpcf /tmp/etc.tar.gz /etc &

完成时的提示:

[1]+ Done		tar -zpcf /tmp/etc.tar.gz /etc
#[1]是job number 代表job1
# +代表最近一个被丢到后台的任务

1.1.1 将目前的任务丢到后台中暂停:[Ctrl]+z

[root@study ~] vim ~/bashrc
#按下[Ctrl]+z
[1]+	Stopped		vim ~/bashrc
[root@study ~]   #取得前台操控权

1.1.2 查看目前的后台任务状态:jobs

jobs命令主要用于显示系统中的任务列表及其运行状态

[root@study ~]  jobs [参数] [目录]
-l : 显示作业列表时包括进程号
-n : 显示上次使用jobs后状态发生变化的作业
-p : 显示作业列表时仅显示其对应的进程号
-r : 仅显示运行的(running)作业
-s : 仅显示暂停的(stopped)作业

范例:
查看目前的bash当中,所有的任务,与对应的PID

[root@study ~] jobs -l
[1]-	14566	Stopped		vim ~/bashrc
[2]+	14567	Stopped		find / -print
# -代表最近第二个被放置到后台中的任务号码
# +代表最近被放到后台的任务号码

1.1.3 将后台任务拿到前台来处理:fg

fg命令用于将后台作业(在后台运行的或者在后台挂起的作业放到前台终端运行

[root@study ~] fg [参数]
作业标识	指定要放到前台的作业标识号

fg举例:使用fg命令将任务号为1的任务从后台执行转换到前台执行:

[root@linuxcool ~] fg 1 

1.1.4 让任务在后台下的状态变成运行中:bg

bg命令用于将作业放到后台运行,使前台可以执行其他任务。该命令的运行效果与在指令后面添加符号&的效果是相同的,都是将其放到系统后台执行

[root@study ~] bg [参数]
作业标识	指定需要放到后台的作业标识号

bg举例
使用bg命令将任务号为1的任务放到后台继续执行:

[root@linuxcool ~] bg 1

bg举例
使用bg命令与在指令后面添加符号”&”的效果是一样的,使用&将find / -name password放到后台执行:

[root@linuxcool ~] find / -name password &

1.1.5 管理后台当中的任务:kill

linux系统中kill命令用来删除执行中的程序或工作
kill命令可将指定的信号发送给相应的进程或工作。 kill命令默认使用信号为15,用于结束进程或工作。如果进程或工作忽略此信号,则可以使用信号9,强制杀死进程或作业

[root@study ~] kill [参数] [进程号]
-l : 列出系统支持的信号
-s : 指定向进程发送的信号
-a : 处理当前进程时不限制命令名和进程号的对应关系
-p : 指定kill命令只打印相关进程的进程号,而不发送任何信号

范例:

[root@linuxcool ~] ps
PID TTY          TIME CMD
1951 pts/0    00:00:00 bash
2446 pts/0    00:00:00 ps
#查看bash的进程ID为1951,然后输入:
[root@linuxcool ~] kill -9 1951
# -9这个信号通常是在强制删除一个不正常的任务
# -15是以正常步骤结束一项任务(默认值)

1.2 脱机管理问题

&可以将bash的任务放置bash后台
at命令可将任务放置到系统后台

nohup命令的全称为“no hang up”,该命令可以将程序以忽略挂起信号的方式运行起来,被运行的程序的输出信息将不会显示到终端。

nohup可在脱机或注销系统后,还能够让任务继续执行

[root@linuxcool ~] nohup [参数]		#在终端前台中任务
[root@linuxcool ~] nohup [参数] & 	#在终端后台中任务
--help : 在线帮助
--version : 显示版本信息

使用nohup命令在后台运行程序:

[root@linuxcool ~] nohup bash linuxcool.sh &

想让终端后台的任务在你注销后还能继续执行,那使用【nohup】并搭配 & 是不错的选择

显示全文