美文网首页
linux命令后台执行

linux命令后台执行

作者: Dingsf | 来源:发表于2016-08-03 03:27 被阅读46次

nohup &

kill -l 查看系统支持的信号
kill -l 1 编号1表示信号SIGHUP,退出终端时会发送信号SIGHUP.
kill -l 2 编号2表示信号SIGINT,终端里用Ctrl+C发送SIGINT,用Ctrl+Z发送SIGTSTP,可以使用stty -a查看更多终端控制字符
kill -l 9 编号1表示信号SIGKILL,强行结束进程.
kill -l 15 编号15表示信号SIGTERM,kill默认发送的信号,通知程序正常退出.

nohup vmstat 1 >vmstat.log 2>&1 &

发送信号HUP给vmstat进程:

kill -1 `pgrep vmstat`

pgrep vmstat 因为nohup忽略了HUP信号,所以vmstat没有退出.

退出终端时会发送信号SIGHUP(编号1)给vmstat进程,但nohup会忽略掉SIGHUP信号,因此vmstat不会退出.
但Ctrl+C会终止,因为Ctrl+C发送的信号是SIGINT(编号2).

vmstat 1 >vmstat.log 2>&1 &

末尾的"&"用于把vmstat放到后台运行,退出终端时(比如关闭terminal或者ssh连接)vmstat也会退出.

当进程不是守护进程时,不能简单地在命令行后添加一个&,当终端关闭时,该进程也随之关闭。因为通常在终端起动的进程其父进程是终端进程。当终端关闭时,其所有子进程也随之关闭。使进程在后台执行需要使用nohup命令:

nohup command > out.log 2>&1 &

nohup的作用是将进程的父进程设置为1,即init进程,这样终端关闭时,不会影响该进程。

2>&1

shell中可能经常能看到

/dev/null 2>&1

/dev/null 代表空设备文件

> 代表重定向到哪里,例如:echo "123" > /home/123.txt
1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"
2 表示stderr标准错误
& 表示等同于的意思,2>&1,表示2的输出重定向等同于1

那么:

1>/dev/null 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。

2>&1 接着,标准错误输出重定向等同于标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。

相关文章

  • linux命令后台执行

    nohup & kill -l 查看系统支持的信号kill -l 1 编号1表示信号SIGHU...

  • shell脚本后台运行

    1. 使用&符号在后台执行命令 在Linux命令或者脚本后面增加&符号,从而使命令或脚本在后台执行,例如: 2.使...

  • Linux后台执行命令

    当在终端工作时,可能一个持续运行的作业占住屏幕输出,或终端退出时导致命令结束。为了避免这些问题,可以将这些进程放到...

  • Linux后台执行jmeter命令

    nohup &

  • 后台执行的命令,如何转回前台

    如何让命令后台执行 执行命令的时候加上 & ,即 command & 可实现后台执行命令, 执行 command ...

  • 2018-04-03 &, nohup, &&, |和||

    linux后台执行命令:&和nohuplinux中的&&和&,|和||nohup /dev/null 2>&1 含义详解

  • linux命令后台执行的方法

    自从做生信以来,总有那么几次,敲下回车后发现这个command执行的时间远超过预期。眼看着下班时间到了,进程还没有...

  • linux 后台执行相关命令

    1、jobs 查看所有后台执行的作业(作业有编号) 2、fg 编号 将后台执行的放前台执行 3、netstat ...

  • Linux 后台执行程序/命令

    在Linux下,我们有时候希望命令或者程序能够在后台执行,从而能够同时处理其他事情。下面将介绍几种将程序切换至后台...

  • Linux 命令及技巧

    Linux 命令拼接 顺序执行 前面执行成功后,后面不执行 前面执行成功后,后面才执行 Linux find 命令...

网友评论

      本文标题:linux命令后台执行

      本文链接:https://www.haomeiwen.com/subject/lkdqsttx.html