[linux命令] 如何在用户终端退出后,不挂起或退出用户正在运行的程序

咱们常常用ssh链接远程linux服务器进行管理和运行程序等,咱们会发现,当咱们把终端界面退出后,咱们经过这个终端执行的程序,无论是在前台运行,仍是已经经过&挂在了后台运行的程序,都会由于在退出终端的过程当中,发出的SIGHUP信号而退出,有时候咱们但愿咱们即便是退出了终端,某个程序也须要一直运行下去,那么咱们能够采起如下两种方法。html

使用tmux

若是咱们有服务器的root权限,咱们能够安装tmux,命令如:
sudo apt-get install tmux
安装完以后,咱们须要在tmux下运行某个程序,好比:linux

tmux new -s your_envs
./program.out & # 运行某个程序并把它挂在后台,其实不挂在后台也行,不影响咱们须要实现的功能
# 这个时候即便是退出了终端,咱们的程序仍然在运行着 

接下来即使是你退出了终端,也能够再次回到这个环境,命令如:web

tmux a -t your_envs

经过命令tmux ls能够查看已存在的环境。
不过这个要求咱们有服务器的root权限,在某些场合咱们难以得到,所以咱们有另个解决方法。shell

使用nohup命令

nohup的意思是no hang up也就是不挂起的意思,其后可加任何命令command,使得你退出终端后,这个命令也不会由于SIGHUP信号而挂起。若是你正在运行一个进程,并且你以为在退出账户时该进程还不会结束,那么可使用nohup命令。该命令能够在你退出账户/关闭终端以后继续运行相应的进程。 这个命令详情如[1]:服务器

nohup command > myout.file 2>&1 &   
# 咱们程序command的输出若是在不指定特定的out文件的状况下,
# 在缺省状况下该做业的全部输出都被重定向到一个名为nohup.out的文件中的,
# 若是咱们须要指定特定的文件保存其输出结果,那么如上命令,重定向到`myout.file`中

其中的2>&1看起来比较奇怪,其实意思是是将标准错误(2)重定向到标准输出(&1),标准输出(&1)再被重定向输入到myout.file文件中,这里的数字表示为:ssh

0 – stdin (standard input),
1 – stdout (standard output),
2 – stderr (standard error)

而命令最后的&就是挂在后台运行的意思。svg

Updatescreen命令相似于tmux一样能够实现相似的功能。spa


Reference

[1]. https://www.cnblogs.com/jinxiao-pu/p/9131057.htmlcode

相关文章
相关标签/搜索