10个 Linux/Unix下 Bash 和 KSH shell 的作业控制实例
2023-09-11 14:16:02 时间
jobID 或 JOB_SPEC - 工作号要与fg, bg, wait, kill和其他shell命令一起使用。你必须在工作号前缀添加一个百分号:(%)。
加号 (+) 标识着默认的或是现在的作业。
减号 (-) 标识着前一个作业。 %1
fg %1
kill %2
状态 - 关于作业的状态:
Running - 该 作业正在运行,还没有被外部信号挂起。
Stopped - 该作业已经被挂起。
#5: 在后台恢复 挂起/停止状态的作业
#9: 查找最后的作业的 PID
#10: 等候作业完成
关于 shell 内置命令和外部命令的小注
Linux模拟实现【简易版bash】 Linux 系统主要分为 内核(kernel) 和 外壳(shell),普通用户是无法接触到内核的,因此实际在进行操作时是在和外壳程序打交道,在 shell 外壳之上存在 命令行解释器(bash),负责接收并执行用户输入的指令,本文模拟实现的就是一个 简易版命令行解释器
Shell脚本的常用执行方式、bash 和 sh 的关系、子shell、Centos 默认的解析器是 bash、Linux 提供的 Shell 解析器、Shell 概述、Shell 脚本入门 采用 bash 或 sh+脚本的相对路径或绝对路径(不用赋予脚本+x 权限)、采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x)、在脚本的路径前加上“.”或者 source(了解)原因: 前两种方式都是在当前 shell 中打开一个子 shell 来执行脚本内容,当脚本内容结束,则 子 shell 关闭,回到父 shell 中。第三种,也就是使用在脚本路径前加“.”或者 source 的方式,`可以使脚本内容在当前 shell 里执行,而无需打开子 shell!`这也是为什么我们每次要修改完
Linux Shell编程(2) - Bash 变量 1. Bash 变量的命名规则 变量名只能包含字母、数字、下划线 变量名不能以数字作为开头 变量名区分大小写 变量名长度不超过255个字符 变量名在有效范围内必须唯一
加号 (+) 标识着默认的或是现在的作业。
减号 (-) 标识着前一个作业。 %1
fg %1
kill %2
状态 - 关于作业的状态:
Running - 该 作业正在运行,还没有被外部信号挂起。
Stopped - 该作业已经被挂起。
我也可以规定命令行开端符合字符串"ping"的作业[译注:不能出现不明确的字符串,例如如果后台有两个 vim 进程而你敲入 fg %vim 会报错。]:
#5: 在后台恢复 挂起/停止状态的作业
在这个例子中,我使用yum 命令更新所有安装在 Redhat 或 CentOS Linux 生产服务器上的软件包并置于后台作业。
# yum -y update /root/patch.log
然而,由于一些原因(例如,过载问题)我决定停止这个作业20分钟:
# kill -s stop %yum
输出样例:
[7]+ Stopped yum -y update /root/patch.log
用 bg 重启停止在后台的 yum 进程
现在,我将要恢复停止的 yum -y update /root/patch.log 作业,键入:
# bg %7
或者:
# bg %yum
输出样例:
[7]+ yum -y update /root/patch.log #6: 杀死作业/进程
杀死yum 命令进程,输入如下kill 命令及其作业号 7:
# kill %7
或者
# kill 进程ID
输出样例:
[7]+ Terminated yum -y update /root/patch.log
在 Linux/FreeBSD/OS X Unix 下你也可以使用 killall 命令通过名字杀死进程或是 jobID 而不是通过 PID
#7 为什么当我登出后 shell 会清除我的所有后台作业在这个例子中,我将会启动 pdfwriter.py 来批量生成这个站点的 pdf 文件:
一旦当我登出shell时,pdfwriter.py 作业就会被我的 shell 杀死。为了克服这个问题需要使用shell的内置命令 disown 来告诉 shell 不要发送 HUP 信号,键入:
#9: 查找最后的作业的 PID
为了查找最近在后台执行的(异步)命令的进程ID,可使用 bash shell 的特殊参数 $!
#10: 等候作业完成
wait 命令会等候给予的进程ID 或 作业ID指定的进程,然后报告它的终止状态。语法如下:
关于 shell 内置命令和外部命令的小注
运行下面的 type 命令找出给予命令是否属于内部或外部的。
type -a fg bg jobs disown
输出样式:
Linux模拟实现【简易版bash】 Linux 系统主要分为 内核(kernel) 和 外壳(shell),普通用户是无法接触到内核的,因此实际在进行操作时是在和外壳程序打交道,在 shell 外壳之上存在 命令行解释器(bash),负责接收并执行用户输入的指令,本文模拟实现的就是一个 简易版命令行解释器
Shell脚本的常用执行方式、bash 和 sh 的关系、子shell、Centos 默认的解析器是 bash、Linux 提供的 Shell 解析器、Shell 概述、Shell 脚本入门 采用 bash 或 sh+脚本的相对路径或绝对路径(不用赋予脚本+x 权限)、采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x)、在脚本的路径前加上“.”或者 source(了解)原因: 前两种方式都是在当前 shell 中打开一个子 shell 来执行脚本内容,当脚本内容结束,则 子 shell 关闭,回到父 shell 中。第三种,也就是使用在脚本路径前加“.”或者 source 的方式,`可以使脚本内容在当前 shell 里执行,而无需打开子 shell!`这也是为什么我们每次要修改完
Linux Shell编程(2) - Bash 变量 1. Bash 变量的命名规则 变量名只能包含字母、数字、下划线 变量名不能以数字作为开头 变量名区分大小写 变量名长度不超过255个字符 变量名在有效范围内必须唯一
相关文章
- STM32MP157 Linux系统移植开发篇1:linux系统移植前说明及源码编译
- Linux集群和自动化维3.7.1 开发环境中的Fabric应用实例
- Linux 有问必答: 如何在红帽系linux中编译Ixgbe驱动
- Linux bash受限的shell(RESTRICTED SHELL)
- linux shadow文件*,Linux /etc/shadow文件详解
- 用navicat访问linux数据库,成功实现Navicat访问Linux中安装的MySQL数据库
- 转 windows下安装pycharm并连接Linux的python环境 以及 windows 下notepad ++编辑 linux 的文件
- Linux下TCP通信简单实例
- 【SoC FPGA学习】十二、Linux 设备树的原理与编写I2C控制器应用实例
- Linux 之 arm linux 板子与 ubuntu 使用 nfs 进行 mount 挂载进行文件传输的简单整理
- Linux学习笔记(20)linux exec
- Linux学习笔记(3)linux服务管理与启停(开机自启与自定义服务)
- 云服务器 ECS 搭建WordPress网站:购买 Linux 实例
- 《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---46
- 《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---21
- 《Linux命令行与shell脚本编程大全 第3版》高级Shell脚本编程---06
- 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---53
- 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---52
- 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---23
- 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---04