如何将当前正在运行的 linux 进程放在后台?

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

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

168244 次浏览

使用 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 命令在后台继续它,[ ... ]。A ^ Z 立即生效,并具有导致挂起的输出和字头被丢弃的附加副作用。

Bg [ 工作规格... ]
在后台恢复每个暂停的作业 工作规格,就好像它已经开始了 & 。如果不存在 工作规格,则使用 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以数字作为进程的索引来终止后台进程。