Linux 进程, 后台运行

前言

1. xshell远程连接时发现, 是不是服务器就无法访问, 感觉不应该啊, 最后发现, 是我这端网络不稳定, 导致xshel的断开连接, 因此程序断开
2. 让程序在后台跑后,不会占据终端,我们可以用终端做别的事情。

方式

  • basic
    • jobs //查看任务,返回任务编号n和进程号
    • bg %n //将编号为n的任务转后台运行
    • fg %n //将编号为n的任务转前台运行
    • ctrl+z //挂起当前任务
    • ctrl+c //结束当前任务
    • 在Linux中,如果要让进程在后台运行,一般情况下,我们在命令后面加上&即可,实际上,这样是将命令放入到一个作业队列中了:
      $ ./test.sh &
      [1] 17208
    • 在后台运行作业时要当心:需要用户交互的命令不要放在后台执行,因为这样你的机器就会在那里傻等。不过,作业在后台运行一样会将结果输出到屏幕上,干扰你的工作。如果放在后台运行的作业会产生大量的输出,最好使用下面的方法把它的输出重定向到某个文件中:
      command >out.file 2>&1 &
  • shell
    但是如上方到后台执行的进程,其父进程还是当前终端shell的进程,而一旦父进程退出,则会发送hangup信号给所有子进程,子进程收到hangup以后也会退出。如果我们要在退出shell的时候继续运行进程,则需要使用nohup忽略hangup信号,或者setsid将将父进程设为init进程(进程号为1)
    
    • nohup 如果让程序始终在后台执行,即使关闭当前的终端也执行(之前的&做不到),这时候需要nohup。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。关闭中断后,在另一个终端jobs已经无法看到后台跑得程序了,此时利用ps 命令(进程查看命令)

你可能感兴趣的:(Linux 进程, 后台运行)