文档章节

shell编程总结12(信号与作业)

心中的理想乡
 心中的理想乡
发布于 2017/02/25 21:32
字数 711
阅读 6
收藏 0

1、常见的Linux下的信号:
    1    SUGHUP    挂起进程    
    2    SUGINT    终止进程
    3    SUGQUIT    停止进程
    9    SIGKILL    无条件终止进程
    15    SIGTERM    可能的话终止进程
    17    SIGSTOP    无条件停止进程,但不是终止进程
    18    SIGTSTP    停止或暂停进程,但不终止进程
    19    SIGCONT    继续运行停止的进程
    说明:bash shell会忽略收到的任何3、15信号,正因为这样,交互式shell才不会被意外终止,但是bash shell会处理收到的1、2信号
2、使用ctrl+c来产生一个SUGINT进行终止正在运行的进程,使用ctrl+z组合来产生一个SIGTSTP的信号,来暂停或者停止进程,可是不终止

3、使用kill -9 PID进行无条件终止进程

4、捕捉信号:trap commands signals
    举例:trap "echo 'sorry!I have trapped ctrl-c'" SIGINT SIGTERM
    另外可以捕捉脚本退出:trap "echo byebye" EXIT
    移除捕捉:trap - EXIT

5、后台模式运行脚本:/test1 &
    输出:[1] 1987  #第一个是shell分配给进程的作业号,第二个是PID
    说明:每个后台进程都绑定到了该终端会话上,如果终端会话退出了,进程也会退出

6、在非控制台下运行脚本:nohup
    说明:主要用途是可以在终端会话退出之后,静默启动的进程也不会结束,一直后台运行,并且会叫标准输出与标准错误输出都重定向到一个名为nohup.out的文件里面
    使用:nohup ./test1 &


7、查看当前终端会话中的作业:jobs
    几个重要的参数:
                    -l 列出PID(很重要,可以直接查看PID然后kill掉)
                    -p 只列出PID
                    -r 只列出运行中的作业
                    -s 只列出已停止的作业
                    

8、脚本中输出当前shell脚本运行时的PID,使用:$$

9、作业列出之后的+-号说明:带加号的作业会被当成默认的作业,在使用作业控制命令时,如果未在命令行指定任何的作业号,该作业会被当成操作对象,带减号的作业则会在当前默认作业完成处理时成为下一个默认作业。任何时候只有一个带加号与带减号的作业。

10、每次都忘记的一个重启后台作业的命令:bg(以后台模式重启后台停止的进程)
        举例:bg 2
        说明:后面加上的数字是作业号
        另外:fg(以前台的模式重启后台停止的进程)
11、在文件中定义自己的开机脚本:
    debian    /etc/init.d/rc.local
    Ubuntu    /etc/rc.local
    说明:将要在开机时候启动的脚本,使用全路径的方式写入这些个文件当中
 

© 著作权归作者所有

共有 人打赏支持
心中的理想乡

心中的理想乡

粉丝 23
博文 76
码字总数 104605
作品 0
深圳
程序员
私信 提问
脚本运行控制

Linux通过信号在运行在系统的进程之间通信,用信号来停止启动及无条件终止进程。同样也可以用信号来控制shell脚本的运行。 1.Linux系统信号 Linux系统和应用程序可以生成30多个信号,最常见的...

Caishu
2016/05/20
170
0
Shell主要逻辑源码级分析 (2)——SHELL作业控制

版权声明:本文由李航原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/110 来源:腾云阁 https://www.qcloud.com/community 作业控制本身也是基于进程控...

偶素浅小浅
2016/11/01
34
0
如何在 Linux 系统中结束进程或是中止程序

在 Linux 中有几种使用命令行或图形界面终止一个程序的方式。 进程出错的时候,您可能会想要中止或是杀掉这个进程。在本文中,我们将探索在命令行和图形界面中终止进程或是应用程序,这里我们...

08%
2018/06/11
0
0
如何在 Linux 系统中结束结束进程或是中止程序

在 Linux 中有几种使用命令行或图形界面终止一个程序的方式。 进程出错的时候,您可能会想要中止或是杀掉这个进程。在本文中,我们将探索在命令行和图形界面中终止进程或是应用程序,这里我们...

08%
2018/06/04
0
0
ssh 关闭后仍保持当前运行的进程

ssh 关闭后仍保持当前运行的进程 由于各种原因,需要通过ssh登录linux或者unix主机,很多时候我们需要通过ssh的终端启动一 些服务或者运行一些程序,但是默认情况下,当我们关闭ssh终端连接,...

今幕明
2014/11/06
0
1

没有更多内容

加载失败,请刷新页面

加载更多

Django进阶 1.1 ORM基础—ORM 1.2.1 增删改查之查询 1.2.2 删改增 (1) 1.2.3 删改增 (2)

ORM基础 ORM是Django操作数据库的API,Django的作者将sql语句封装在里面供我们使用。 我们前面还提到过Django提供一个模拟数据库的工具,sqlite,供我们学习测试使用。 如果我们想使用mysql...

隐匿的蚂蚁
今天
1
0
Windows 上安装 Scala

在安装 Scala 之前需要先安装 Java 环境,具体安装的详细方法就不在这里描述了。 您可以自行搜索我们网站中的内容获得其他网站的帮助来获得如何安装 Java 环境的方法。 接下来,我们可以从 ...

honeymose
今天
3
0
数据库篇多表操作

第1章 多表操作 实际开发中,一个项目通常需要很多张表才能完成。例如:一个商城项目就需要分类表(category)、商品表(products)、订单表(orders)等多张表。且这些表的数据之间存在一定的关系...

stars永恒
今天
3
0
nginx日志自动切割

1.日志配置(Nginx 日志) access.log----记录哪些用户,哪些页面以及用户浏览器,IP等访问信息;error.log------记录服务器错误的日志 #配置日志存储路径:location / {      a...

em_aaron
昨天
5
0
java 反射

基本概念 RTTI,即Run-Time Type Identification,运行时类型识别。RTTI能在运行时就能够自动识别每个编译时已知的类型。   要想理解反射的原理,首先要了解什么是类型信息。Java让我们在运...

细节探索者
昨天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部