我有一个使用git在Linux shell上将文件上传到远程服务器的命令,需要花费很多小时来完成。
如何将正在运行的程序放在后台?这样我可以继续在shell上工作,而该进程也能完成。
如何将正在运行的程序放在后台?这样我可以继续在shell上工作,而该进程也能完成。
使用CTRL+Z键来暂停进程,然后使用命令bg
将其恢复到后台。例如:
按下CTRL+Z以暂停当前进程
bg
将进程恢复到后台
sleep 60
^Z #Suspend character shown after hitting CTRL+Z
[1]+ Stopped sleep 60 #Message showing stopped process info
bg #Resume current job (last job stopped)
有关在bash手册页面中的作业控制和bg
用法的更多信息:
作业控制
当进程正在运行时,输入挂起字符(通常是^Z, Control-Z)会导致该进程停止并返回控制权给bash。用户可以使用bg
命令来在后台继续执行该作业的状态。^Z立即生效,并产生额外的副作用:导致未决输出和预读被丢弃。
bg
[jobspec...]
将每个暂停的作业jobspec恢复到后台,就像使用&符号启动一样。如果没有提供jobspec,则使用shell对当前作业的概念。
编辑
启动一个进程,即使您关闭终端它也可以继续运行
nohup [command] [-args] > [filename] 2>&1 &
e.g.
nohup /home/edheal/myprog -arg1 -arg2 > /home/edheal/output.txt 2>&1 &
如果您只是想忽略输出(不太明智),请将文件名更改为/dev/null
要将错误消息设置为另一个文件,请将&1
更改为该文件的文件名。
此外:您可以使用jobs
命令查看这些后台进程的索引列表。您可以通过运行kill%1
或kill%2
来终止后台进程,其中数字是该进程的索引。
/dev/null
,则必须重新启动它。请参见上面的编辑。 - Ed Healkill -9 <pid of your shell>
命令,然后进程仍将继续运行并且输出将被丢弃 - 但是您需要重新登录以启动新的 shell。 - Ed Healdisown
命令。 - kirk roerig
ctrl+z
的解决方案也很好。 - Ela782myapp > /tmp/myapp.log &
,这将在后台运行myapp
并将其输出写入/tmp/myapp.log
。 - user889030