linux作业控制三个,10个linux 作业控制的bash 脚本实例
linux和unix都是多任务的操作系统,也就是说系统可以同时运行多个任务或者进程。下面我们来说一下在linux或者unix下用来处理多任务的作业控制命令。
什么是作业控制(job control)?
作业控制就是可以停止或者暂停正在执行的程序,还可以使暂停的进程重新开始运行。这些都是可以通过我们的shell程序来实现。
1.创建一个linux/unix 作业(job)
root@devops ~]# top &
26569
在这个例子中:
[1]:表明刚才的作业号是1
26569: 这个是进程的ID号
让我们来多创建几个作业:
gedit /tmp/test.c &
sleep 1000 &
2.列出当初正在后台运行的作业
为了查看当前运行的作业的状态,可以输入下面的命令:
$jobs
$jobs -l
命令输出如下:
[root@devops ~]# jobs
[1]- Stopped top
[2]+ Stopped vim /tmp/test.c
[3] Running sleep 1000 &
[root@devops ~]# jobs -l
[1]- 26650 Stopped (tty output) top
[2]+ 26651 Stopped (tty output) vim /tmp/test.c
[3] 26653 Running sleep 1000 &
[root@devops ~]#
3. 停止或暂停正在运行的作业
当一个程序正在运行的时候,如果想让该程序在后台执行,可以使用[ctrl]+ [z]或者使用kill命令:
kill -s stop PID
下面举一个通过ctrl+z来暂停正在执行的ping命令:
[root@devops ~]# ping osetc.com
PING osetc.com (42.96.192.124) 56(84) bytes of data.
64 bytes from 42.96.192.124: icmp_seq=1 ttl=64 time=0.031 ms
64 bytes from 42.96.192.124: icmp_seq=2 ttl=64 time=0.036 ms
64 bytes from 42.96.192.124: icmp_seq=3 ttl=64 time=0.033 ms
^Z
[4]+ Stopped ping osetc.com
[root@devops ~]#
4. 恢复暂停的作业到前台去运行
我们可以使用fg命令将暂停在后台的ping进程调到前台来运行,用法如下:
fg %5 #fg命令后跟百分号,再跟上作业号
如果想操作所有以“ping”开头的命令行作业,可以使用下面的格式:
fg %ping
示例输出:
root@devops ~]# fg %4
ping osetc.com
64 bytes from 42.96.192.124: icmp_seq=4 ttl=64 time=0.033 ms
64 bytes from 42.96.192.124: icmp_seq=5 ttl=64 time=0.030 ms
64 bytes from 42.96.192.124: icmp_seq=6 ttl=64 time=0.030 ms
64 bytes from 42.96.192.124: icmp_seq=7 ttl=64 time=0.036 ms
^C
[root@devops ~]# fg %ping
ping osetc.com
64 bytes from 42.96.192.124: icmp_seq=3 ttl=64 time=0.023 ms
64 bytes from 42.96.192.124: icmp_seq=4 ttl=64 time=0.031 ms
64 bytes from 42.96.192.124: icmp_seq=5 ttl=64 time=0.030 ms
64 bytes from 42.96.192.124: icmp_seq=6 ttl=64 time=0.029 ms
^C
--- osetc.com ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 10964ms
rtt min/avg/max/mdev = .023/0.027/0.031/0.006 ms
5. 恢复后台已暂停的进程继续在后台运行
我们可以使用bg命令将后台挂起的进程重新开始执行,示例如下:
[root@devops ~]# jobs
[2]- Stopped vim /tmp/test.c
[4]+ Stopped ping osetc.com
[5] Running sleep 1000000 &
[root@devops ~]# kill -s stop %5
[root@devops ~]# jobs
[2] Stopped vim /tmp/test.c
[4]- Stopped ping osetc.com
[5]+ Stopped sleep 1000000
从上面示例可以看出,正在运行sleep进程被挂起了。
[root@devops ~]# bg %5
[5]+ sleep 1000000 &
[root@devops ~]# jobs
[2]- Stopped vim /tmp/test.c
[4]+ Stopped ping osetc.com
[5] Running sleep 1000000 &
将挂起在后台的进程重新开始执行
6. 杀掉一个进程
为了杀掉一个linux命令的进程,我们可以输入kill命令加上该进程的作业ID号,用法如下:
#kill %4
示例输出如下:
[root@devops ~]# jobs
[2]- Stopped vim /tmp/test.c
[4]+ Stopped ping osetc.com
[5] Running sleep 1000000 &
[root@devops ~]# kill %4
[4]+ Stopped ping osetc.com
[root@devops ~]# jobs
[2]- Stopped vim /tmp/test.c
[4]+ Terminated ping osetc.com
[5] Running sleep 1000000 &
[root@devops ~]# jobs
[2]+ Stopped vim /tmp/test.c
[5]- Running sleep 1000000 &
[root@devops ~]#
7.为什么shell在退出后会杀掉所有的后台作业进程
默认情况下,当前shell在退出的时候会发送一个HUP信号,杀掉所有后台作业,如果想让作业在当前shell退出后任然能保持在后台运行,那么可以在输入disown命令,再退出shell程序。
[root@devops ~]# jobs
[1]+ Running tail -f /var/log/messages &
[root@devops ~]# disown
[root@devops ~]# exit
8.使用nohup命令来阻止后台的进程在退出shell后被杀掉
[root@devops ~]# nohup tail -f /var/log/messages &
[1] 26806
[root@devops ~]# exit
9. 查找最近一次执行的作业的进程号
为了查找最近一次执行的作业的进程ID号,可以使用下面的特殊符号:$!
[root@devops ~]# jobs -l
[1]+ 26832 Stopped (tty output) top
[2]- 26833 Running sleep 100000 &
[root@devops ~]# echo $!
26833
10. wait命令等待作业的完成
wait命令用来等待给定进程ID运行完成,而后执行wait命令后的程序
点击(此处)折叠或打开
sleep 100 &
wait $!
date
linux作业控制三个,10个linux 作业控制的bash 脚本实例相关推荐
- linux平台调试终端,10款Linux平台上优秀的调试器,总有一款适合你!
前言 调试器对于检测程序中的 bug 是必不可少的.有很多优秀的 Linux 调试器,可以很容易地找到应用程序中的错误.我们将在本文中介绍几款好用的调试器. 1. GNU Debugger (GDB) ...
- win10仿linux桌面,仿Windows 10 的Linux图标主题及GTK 3.x
这是一款仿效 Windows 10 桌面环境的 Linux GTK 3.x 主题,主题版本为 v0.6.7.如果你喜欢这个主题可以在 Linux公社资源站下载该主题. 图标主题下载: Windows_ ...
- drupal linux安装,在Debian 10(Buster) Linux服务器中安装drupal 8.8.0的说明
按照本说明,你就可以成功的在Debian 10(Buster) Linux服务器中安装好drupal 8.8.0版本,已亲测能稳定运行. 先决条件 在开始安装之前,对安装的最低要求是: 数据库服务器, ...
- 【Linux系统】第10节 linux系统文件及目录权限详解
目录 1 权限 1.1 权限的查看 1.2 权限解读 2 权限修改 2.1 修改文件/目录普通权限 2.1.1 方法1:指定权限修改 2.1.2 方法2:八进制赋权法 2.2 修改文件所属信息 2.3 ...
- linux kset subsystem 3.10内核,Linux设备模型分析之kset(基于3.10.1内核)
作者:刘昊昱 内核版本:3.10.1 一.kset结构定义 kset结构体定义在include/linux/kobject.h文件中,其内容如下: 142/** 143 * struct kset - ...
- linux添加三个用户lab1,linux操作系统实验linux下用户与组的管理
姓名学号班级 实验三Linux下用户与组的管理 一.实验目的 1.理解/etc/passwd和/etc/group文件的含义: 2.掌握桌面环境下管理用户与组群的方法: 3.掌握利用shell命令管理 ...
- 项目linux基本命令1答案,10. 项目Linux基本命令1
实训项目1 Linux基本命令 一.实训目的 ? 掌握Linu各类命令的使用方法: ? 熟悉Linx操作环境 二.实训内容 练习使用Linux常用命令,达到熟练应用的目的 三.实训步骤 子项目1.文件 ...
- Linux的三种权限含义,Linux chmod命令及权限含义
对于一条权限赋值命令:sudo chmod -R 764 ×××:我们必须了解其含义: (1)各字段含义:sudo chmod -R(更改文件夹及其子文件夹) 7(所有者权限)6(组用户权限)4( ...
- linux开源软件推荐,10个Linux平台开源ERP软件推荐
10个最好的自由Linux平台Enterprise Resource Planning (ERP) 软件.经常关注开源软件的朋友,或经常访问Sourceforge.net.apache.org等网站的 ...
最新文章
- linux系统正常停机的命令,Linux系统重启命令大全
- 对原生ajax的理解
- 详细解读CSS优先级——Web前端系列学习笔记
- 通过Dapr实现一个简单的基于.net的微服务电商系统(七)——一步一步教你如何撸Dapr之服务限流...
- bjd luts_BJD娃娃背后的圈层文化:一个“成品娃”拍出22万元天价!
- MATLAB的GUI如何清空坐标轴的图像
- 查找CSDN误删除博客方法
- flask(四)jinja2模板
- 混日子不是你的错,根源在这里
- springboot16 整合MyBatis
- Zeppelie连接jdbc的使用
- 从输入url到页面展现发生了什么?
- 是不让页面重新渲染元素~·
- ETF最神秘的地带:清算交收(背景知识篇)
- unity 给模型绑定骨骼_五年游戏建模实战经验,总结了一套项目模型规范及制作的注意事项...
- 文件恢复:Docrepair-MS Word文档修复软件
- CentOS7 五步安装搜狗拼音输入法
- WinDbg单机调试
- unity响应键盘的组合键
- MongoDB集群节点RECOVERING故障恢复
热门文章
- python3 获取 文件 文件夹大小
- linux putty 永久修改字体大小
- linux 内核 LINUX_VERSION_CODE 和 KERNEL_VERSION 宏定义 版本信息
- python3 RSA加解密
- Linux使用退格键(Backspace键)时出现^H 解决方法
- linux 源码安装 yum rpm区别
- Android操作系统11种传感器介绍
- matlab中并行用不了,请教matlab在linux下的并行问题 - 程序语言 - 小木虫 - 学术 科研 互动社区...
- 计算机上没有找到服务was,win10系统搭建网站提示计算机“.”上没有找到wAs服务的步骤介绍...
- c语言会出现fullgc,以上述代码为基础,在发生过一次FullGC后,上述代码在He