一个进程的运行有两种表现形式,一个前台运行,一个是后台运行,前台运行占用终端资源,比较典型的就是ping命令,执行ping命令之后由于不断输出,到执行结束之前,是无法执行其他命令的,
后台执行的典型命令比如bash,screen,nohup,这些命令在执行过程中是不会影响其他命令操作执行的
ping命令想在后台执行也可以实现,执行操作ping ip &,加上&符号之后,命令将在后台执行,当然还有一些其他的后台运行命令例如:Ctrl+z,jobs,nohup,kill
如果想把后台的命令恢复到前台运行,jobs查看一下想恢复到前台的命令的作业编号,执行fg+空格+jobnumber+enter
前台的程序放到后台执行ctrl+z
ctrl+z与Ctrl+c还是有本质上的区别的,ctrl+c是终止程序,只能在前台执行,后台执行程序操作ctrl+c是无效的,而ctrl+z是让程序在后台处于休眠stop状态,那么如果想让程序在后台处于运行状态,执行bg+jobnumber或者kill -18%jobnumber
后台运行切换到后台休眠执行kill -19%jobnumber
在日常生产中,我们希望某些程序不会因为我们的窗口关闭而导致退出,就会把它放到后台执行,&符号就可以帮助我们将一些程序在后台执行,之前提到的screen命令也可以实现,和screen能达到相同效果的还有一个nohup命令,执行nohup cmd之后,系统会将输出结果放到一个nohup.out的文件里,如果不想让磁盘生成这个nohup.out的文件的话,还是老方法 ,扔到垃圾箱
nohup cmd &> /dev/null &
这样我们窗口关闭之后nohup就会自动将后台运行程序分配到1号进程systemd下持续运行