信号

信号的基本属性可以总结为两方面,即:软中断和时延性。

例如:A给B发送信号,B收到信号之前执行自己的代码,收到信号后,不管执行到程序的什么位置,都要暂停运行,去处理信号,处理完毕再继续执行。与硬件中断类似——异步模式。

但信号是软件层面上实现的中断,早期常被称为“软中断”。由于信号是通过软件方法实现,其实现手段导致信号有很强的延时性。但对于用户来说,这个延迟时间非常短,不易察觉。

查看各类型的信号的具体含义可以用过man 7 signal 命令来查看

 Standard signalsLinux supports the standard signals listed below.  Several signal numbers are architecture-dependent, as indicated in the "Value" column.  (Where three values are given, the first one is usu‐ally valid for alpha and sparc, the middle one for x86, arm, and most other architectures, and the last one for mips.  (Values for parisc are not shown; see the Linux kernel source for signalnumbering on that architecture.)  A - denotes that a signal is absent on the corresponding architecture.)First the signals described in the original POSIX.1-1990 standard.Signal     Value     Action   Comment──────────────────────────────────────────────────────────────────────SIGHUP        1       Term    Hangup detected on controlling terminalor death of controlling processSIGINT        2       Term    Interrupt from keyboardSIGQUIT       3       Core    Quit from keyboardSIGILL        4       Core    Illegal InstructionSIGABRT       6       Core    Abort signal from abort(3)SIGFPE        8       Core    Floating point exceptionSIGKILL       9       Term    Kill signalSIGSEGV      11       Core    Invalid memory referenceSIGPIPE      13       Term    Broken pipe: write to pipe with noreadersSIGALRM      14       Term    Timer signal from alarm(2)SIGTERM      15       Term    Termination signalSIGUSR1   30,10,16    Term    User-defined signal 1SIGUSR2   31,12,17    Term    User-defined signal 2SIGCHLD   20,17,18    Ign     Child stopped or terminatedSIGCONT   19,18,25    Cont    Continue if stoppedSIGSTOP   17,19,23    Stop    Stop processSIGTSTP   18,20,24    Stop    Stop typed at terminalSIGTTIN   21,21,26    Stop    Terminal input for background processSIGTTOU   22,22,27    Stop    Terminal output for background processThe signals SIGKILL and SIGSTOP cannot be caught, blocked, or ignored.Next the signals not in the POSIX.1-1990 standard but described in SUSv2 and POSIX.1-2001.Signal       Value     Action   Comment────────────────────────────────────────────────────────────────────SIGBUS      10,7,10     Core    Bus error (bad memory access)SIGPOLL                 Term    Pollable event (Sys V).Synonym for SIGIOSIGPROF     27,27,29    Term    Profiling timer expiredSIGSYS      12,31,12    Core    Bad argument to routine (SVr4)SIGTRAP        5        Core    Trace/breakpoint trapSIGURG      16,23,21    Ign     Urgent condition on socket (4.2BSD)SIGVTALRM   26,26,28    Term    Virtual alarm clock (4.2BSD)SIGXCPU     24,24,30    Core    CPU time limit exceeded (4.2BSD)SIGXFSZ     25,25,31    Core    File size limit exceeded (4.2BSD)Up  to  and including Linux 2.2, the default behavior for SIGSYS, SIGXCPU, SIGXFSZ, and (on architectures other than SPARC and MIPS) SIGBUS was to terminate the process (without a core dump).(On some other UNIX systems the default action for SIGXCPU and SIGXFSZ is to terminate the process without a core dump.)  Linux 2.4 conforms to the POSIX.1-2001 requirements  for  these  sig‐nals, terminating the process with a core dump.Next various other signals.Signal       Value     Action   Comment────────────────────────────────────────────────────────────────────SIGIOT         6        Core    IOT trap. A synonym for SIGABRTSIGEMT       7,-,7      TermSIGSTKFLT    -,16,-     Term    Stack fault on coprocessor (unused)SIGIO       23,29,22    Term    I/O now possible (4.2BSD)SIGCLD       -,-,18     Ign     A synonym for SIGCHLDSIGPWR      29,30,19    Term    Power failure (System V)SIGINFO      29,-,-             A synonym for SIGPWRSIGLOST      -,-,-      Term    File lock lost (unused)SIGWINCH    28,28,20    Ign     Window resize signal (4.3BSD, Sun)SIGUNUSED    -,31,-     Core    Synonymous with SIGSYS(Signal 29 is SIGINFO / SIGPWR on an alpha but SIGLOST on a sparc.)SIGEMT is not specified in POSIX.1-2001, but nevertheless appears on most other UNIX systems, where its default action is typically to terminate the process with a core dump.SIGPWR (which is not specified in POSIX.1-2001) is typically ignored by default on those other UNIX systems where it appears.SIGIO (which is not specified in POSIX.1-2001) is ignored by default on several other UNIX systems.Where defined, SIGUNUSED is synonymous with SIGSYS on most architectures.

通过执行kill -l 列出当前系统支持的信号类型及其编号:

[root@cyl cyl]#  kill -l1) SIGHUP    2) SIGINT   3) SIGQUIT  4) SIGILL   5) SIGTRAP2) SIGABRT    7) SIGBUS   8) SIGFPE   9) SIGKILL 10) SIGUSR1
1)  SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
2)  SIGSTKFLT   17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
3)  SIGTTIN 22) SIGTTOU 23) SIGURG  24) SIGXCPU 25) SIGXFSZ
4)  SIGVTALRM   27) SIGPROF 28) SIGWINCH    29) SIGIO   30) SIGPWR
5)  SIGSYS  34) SIGRTMIN    35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
6)  SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
7)  SIGRTMIN+9 44) SIGRTMIN+10    45) SIGRTMIN+11    46) SIGRTMIN+12    47) SIGRTMIN+13
8)  SIGRTMIN+14    49) SIGRTMIN+15    50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
9)  SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
10) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
11) SIGRTMAX-1  64) SIGRTMAX

信号简要说明:

SIGHUP            终止进程    终端线路挂断
SIGINT         终止进程    中断进程
SIGQUIT       建立CORE文件   终止进程,并且生成core文件
SIGILL          建立CORE文件      非法指令
SIGTRAP       建立CORE文件      跟踪自陷
SIGBUS        建立CORE文件      总线错误
SIGSEGV      建立CORE文件      段非法错误
SIGFPE         建立CORE文件      浮点异常
SIGIOT         建立CORE文件      执行I/O自陷
SIGKILL        终止进程    杀死进程
SIGPIPE        终止进程    向一个没有读进程的管道写数据
SIGALARM     终止进程    计时器到时
SIGTERM       终止进程    软件终止信号
SIGSTOP       停止进程    非终端来的停止信号
SIGTSTP       停止进程    终端来的停止信号
SIGCONT      忽略信号    继续执行一个停止的进程
SIGURG        忽略信号    I/O紧急信号
SIGIO           忽略信号    描述符上可以进行I/O
SIGCHLD      忽略信号    当子进程停止或退出时通知父进程
SIGTTOU      停止进程    后台进程写终端
SIGTTIN       停止进程    后台进程读终端
SIGXGPU      终止进程    CPU时限超时
SIGXFSZ      终止进程    文件长度过长
SIGWINCH   忽略信号    窗口大小发生变化
SIGPROF      终止进程    统计分布图用计时器到时
SIGUSR1      终止进程    用户定义信号1
SIGUSR2      终止进程    用户定义信号2
SIGVTALRM  终止进程    虚拟计时器到时

有两个信号可以停止进程:SIGTERM和SIGKILL。 SIGTERM比较友好,进程能捕捉这个信号,根据您的需要来关闭程序。在关闭程序之前,您可以结束打开的记录文件和完成正在做的任务。在某些情况下,假 如进程正在进行作业而且不能中断,那么进程可以忽略这个SIGTERM信号。

对于SIGKILL信号,进程是不能忽略的。这是一个 “我不管您在做什么,立刻停止”的信号。假如您发送SIGKILL信号给进程,Linux就将进程停止在那里。

nohup命令

nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。

nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。

nohup的本质是通过忽略SIGHUP信号,从而不会在终端关闭会退出时由于SIGHUP信号导致程序退出,nohup本身不会将程序放入后台运行,但是通过nohup方式启动的程序,由于其忽略了SIGHUP信号,其接收到SIGHUP信号也不会退出。

语法格式

nohup Command [ Arg … ] [&]

参数说明
Command:要执行的命令。

Arg:一些参数,可以指定输出文件。

&:让命令在后台执行,终端退出后命令仍旧执行。

大多数人都会见到如下方式使用, 执行命令并重定向输入到xx.log文件中

nohup Command > xx.log 2>&1 &

2>&1 解释:

将标准错误 2 重定向到标准输出 &1 ,标准输出 &1 再被重定向输入到文件中。

0 – stdin (standard input,标准输入)
1 – stdout (standard output,标准输出)
2 – stderr (standard error,标准错误输出)

&命令

就是将程序放在后台运行。对于shell来说,通过& 可以把一个程序放在后台运行。其就是作为一个job来运行的。此时如果终端断开,程序还是会被SIGHUP信号导致退出的

语法格式

command   [Arg ...]   &

参数说明

Command:要执行的命令。

Arg:一些参数,可以指定输出文件。

总结

  1. nohup执行后默认会将输出保存在nohup.out文件,但执行后无法接受标准输入,关闭窗口后仍然会运行
  2. &无法将标准输出保存到文件中,可以接受标准输入,关闭窗口后程序就会停止
  3. nohup &一起使用综合了两者的优点,既能标准输入也能将标准输出的日志输入到文件,关闭窗口后仍然会运行

参考链接

  • https://www.runoob.com/linux/linux-comm-nohup.html
  • https://blog.csdn.net/xiaojin21cen/article/details/88991768
  • https://blog.csdn.net/z_ryan/article/details/79132117
  • https://www.cnblogs.com/lr-ting/archive/2012/09/18/2691179.html

Linux后台启动命令总结相关推荐

  1. linux后台运行命令总结

    linux后台运行命令总结 问题: 我们有时候需要登录远程服务器跑运行时间非常长的脚本,这个时候你要让脚本后台运行,不然占着终端窗口看着不舒服.但万一网络不好,(比如我这儿的破校园网,高峰时几秒钟断一 ...

  2. linux后台运行命令,nohup

    linux后台运行命令 1.& 当结束终端时,进程就会停止 command & 例子: ./test.sh & 2.nohup 为不挂起进程的意思 如下时会使得应用在关闭终端时 ...

  3. linux+后台运行+nohup,Linux后台运行命令集(、fg、bg、jobs、nohup、ctrl + z)

    Linux后台运行命令集(&.fg.bg.jobs.nohup.ctrl + z) 1).& 命令或进程最后加上"&",可以把此操作放到后台执行: 2).c ...

  4. Linux后台执行命令

    2019独角兽企业重金招聘Python工程师标准>>> Linux 后台执行命令 ###摘要:### 当你在终端或控制台工作时,可能不希望由于运行一个作业而占住了屏幕,因为可能还有更 ...

  5. kafka前台启动命令与后台启动命令

    1.前台启动命令:     cd /export/servers/kafka_2.11-0.10.0.0      bin/kafka-server-start.sh config/server.pr ...

  6. linux 后端的进程,linux后台启动进程

    1.tips进程与终端 父子进程 在linux系统里面,子进程由父进程fork而来,而所有的进程都是由init进程或其子进程fork而来,即init进程是所有进程的祖先. 父子进程的运行是相对独立的, ...

  7. linux 启动服务后台运行,linux后台启动任务

    当我们在终端启动服务或者训练模型时,启动命令往往会阻塞自己,即无法在终端继续输入,同时为了保证终端关闭不影响进程中断,需要在后台启动进程. 1. nohup命令 后台启动常用的命令如下: nohup ...

  8. linux后台执行命令:amp;与nohup的用法

    点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 大家可能有这样的体验:某个程序运行的时候,会产生大量的log,但实际上我们只想让它跑一下而已, ...

  9. linux svn 启动命令行,Linux下启动、关闭SVN服务

    Linux下启动/关闭Oracle 一.Linux下启动Oracle Linux下启动Oracle分为两步: 1)启动监听: 2)启动数据库实例: 1.登录服务器,切换到oracle用户,或者以ora ...

最新文章

  1. linux操作系统使用论文_Linux高性能服务器设计
  2. 第二十一期:老大难的GC原理及调优,这全说清楚了
  3. matlab 码元扩展,扩频通信及matlab仿真
  4. 【讲师专访】Oracle ACE 总监侯圣文:不懂开发的运维终将被淘汰
  5. C++11 static_assert 使用方法及assert 与 #error
  6. 内核操作系统Linux内核变迁杂谈——感知市场的力量
  7. php构建webservice,php webservice实例(简单易懂)
  8. .CR2格式文件怎么快速批量转换成JPG等格式
  9. Janusgraph索引
  10. JOB DESCRIPTION
  11. 计算机系的的毕业感言,计算机班同学的毕业感言
  12. Word教程_编程入门自学教程_菜鸟教程-免费教程分享
  13. NYOJ - [第九届河南省程序设计大赛]宣传墙(DP)
  14. 18日精读掌握《费曼物理学讲义-卷一》计划(2019/6/12-2019/6/29)
  15. CSMA/CD技术详解
  16. raise TypeError(f‘Object of type {o.__class__.__name__} ‘ TypeError: Object of type bytes is not
  17. Educoder头歌单总线CPU设计(定长指令周期3级时序)(HUST)谭志虎 华中科技大学计算机组成原理实验计算机硬件系统设计
  18. 进程和线程的区别,进程间通信方式,怎么选择比较好
  19. java在线客服系统源码 springboot客服聊天源码 网页客服源码 netty通信技术,java源码
  20. JavaScript数据数据类型判断

热门文章

  1. eclipse技巧 [摘]
  2. 十六进制颜色码转RGB565格式程序
  3. 计算器Java代码实现(进行按钮事件处理和键盘事件处理)
  4. 特斯拉E/E整车电子电气创新架构分析
  5. 怎么提醒女朋友给手机充电?
  6. 计算机网络怎么运行内存,电脑内存多大合适?运行内存占用率高的秘密
  7. 一个用于Allen脑图谱基因数据的工具箱|abagen详细使用教程-获取基于脑区的基因表达矩阵(脑区*gene)
  8. 时间复杂度到底怎么算
  9. 网页无法访问,微信内打开链接提示已停止访问该怎么解决
  10. AndroidStudio实现用户登录注册界面代码(二)