咱们常常用ssh链接远程linux服务器进行管理和运行程序等,咱们会发现,当咱们把终端界面退出后,咱们经过这个终端执行的程序,无论是在前台运行,仍是已经经过&
挂在了后台运行的程序,都会由于在退出终端的过程当中,发出的SIGHUP
信号而退出,有时候咱们但愿咱们即便是退出了终端,某个程序也须要一直运行下去,那么咱们能够采起如下两种方法。html
若是咱们有服务器的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
的意思是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
Update: screen
命令相似于tmux
一样能够实现相似的功能。spa
[1]. https://www.cnblogs.com/jinxiao-pu/p/9131057.htmlcode