Linux笔记:后台运行命令与脱离终端运行命令
Posted Naisu Xu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux笔记:后台运行命令与脱离终端运行命令相关的知识,希望对你有一定的参考价值。
目的
linux中我们一般都是在终端中通过命令进行各种操作,通常情况下一个终端同一时间只能执行一条命令,并且如果关闭当前终端或者注销登陆当前正在执行的命令会被关闭。这些时候就需要通过一些方法来后台运行命令或是脱离终端运行命令了,这篇文章将对这个问题的一些基础处理方法进行说明。
后台运行命令
- 将命令放入后台
在命令后面加上(空格) &
可以将命令放入后台执行;
命令放入后台后会显示[工作号] 进程号
信息;
如有被放入后台执行的命令有输出,输出内容将在前台显示;
放入后台的命令执行完成后会显示[1]+ Done ...
内容(+表示最近放入的命令);
除了上面方式也可以使用ctrl+z
可以将当前正在执行的命令已暂停状态放入后台;
- 查看在后台的命令
使用jobs
命令可以查看放入后台的命令,附加-l
参数可以额外显示进程的PID号;
- 将后台命令恢复到前台
使用fg 工作号
可以将在后台的命令恢复到前台,如果只是用fg
则将恢复最后放入的命令到前台;
- 将后台暂停的命令恢复为后台执行
使用bg 工作号
将后台暂停的命令恢复为后台执行;
脱离终端运行命令
使用上面的 & 或是 ctrl+z 将命令放入后台后,如果用户关闭终端或是注销登陆后后台和其中的命令就都被关闭了。如果想要在这些情况下命令还能持续运行可以使用下面的一些方式:
nohup 命令 &
nohup
命令的功能是让命令可以忽略SIGHUP
信号运行,通常会以nohup 命令 &
方式使用;
使用该方式时原本要输出到前台的内容会被写入到当前目录下一个名为nohup.out
的文件中;
上面演示中可以看到使用kill杀掉 nohup 放入后台的进程后其输出的nohup.out文件就不再更新了;setsid 命令
setsid后跟命令,命令直接就是在新会话中运行的,虽然信息还会在当前终端输出,但是并不在后台中,终端关闭了也不会停止;
disown
前面两种方式都只对新创建的命令有效,但对于已经在运行的命令就得用disown
才能使其脱离终端运行了;
disown
移除最近的后台命令;
disown -a
移除所有后台命令;
disown -r
移除所有正在运行的后台命令;
disown -h
不移除后台命令,但是让它们不会收到SIGHUP信号;
总结
本文中讲的后台运行命令与脱离终端运行命令只是一些最基础的方法,实际上linux中还有一些非常强大且好用的工具可以实现这些功能,且远远比上面的方法好用。最常见的工具比如 screen
和 tmux
,这些工具将在后面单独进行介绍。
以上是关于Linux笔记:后台运行命令与脱离终端运行命令的主要内容,如果未能解决你的问题,请参考以下文章