如何将当前运行的linux进程置于后台



我有一个命令,可以使用git将文件从Linux shell上传到远程服务器,这需要很多小时才能完成。

我怎样才能把正在运行的程序放在后台?这样我仍然可以在shell上工作,并且这个过程也完成了?

使用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使用的更多信息:

JOB CONTROL
在进程运行时键入suspend字符(通常为^Z,CONTROL-Z)会导致该进程停止并将控制权返回给bash。[…]然后,用户可以使用bg命令在后台继续操作此作业的状态,[…]。A^Z立即生效,并具有导致挂起的输出和提前打印被丢弃的额外副作用。

bg[jobspec…]
在后台恢复每个暂停的作业jobspecobspec不存在,则使用shell对当前作业的概念。

编辑

启动一个过程,你甚至可以杀死终端,它仍然运行

nohup [command] [-args] > [filename] 2>&1 &

例如

nohup /home/edheal/myprog -arg1 -arg2 > /home/edheal/output.txt 2>&1 &

要忽略输出(不是很明智),请将文件名更改为/dev/null

要将错误消息设置为其他文件,请将&1更改为文件名。

此外:您可以使用jobs命令查看这些后台进程的索引列表。您可以通过运行kill %1kill %2来终止后台进程,其中数字是该进程的索引。

相关内容

  • 没有找到相关文章

最新更新