我有一个命令,它使用 git 从 Linux shell 将文件上传到远程服务器,这需要几个小时才能完成。
我怎样才能把那个正在运行的程序放在后台?这样我仍然可以在 shell 上工作并且该过程也完成了吗?
我有一个命令,它使用 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)
手册页中有关作业控制和bg
使用的更多信息:bash
作业控制在进程运行时
键入挂起字符(通常是 ^Z、Control-Z)会导致该进程停止并将控制权返回给 bash。[...] 然后,用户可以操纵此作业的状态,使用 bg 命令在后台继续它,[...]。A ^Z 立即生效,并具有导致挂起的输出和预输入被丢弃的额外副作用。bg [ jobspec ...]在后台
恢复每个暂停的作业jobspec,就好像它是用 & 开始的。如果 jobspec不存在,则使用 shell 的当前作业概念。
编辑
启动一个进程,你甚至可以杀死终端,它仍然继续运行
nohup [command] [-args] > [filename] 2>&1 &
例如
nohup /home/edheal/myprog -arg1 -arg2 > /home/edheal/output.txt 2>&1 &
只是忽略输出(不是很明智)将文件名更改为/dev/null
要将错误消息设置为不同的文件,请将其更改&1
为文件名。
另外:您可以使用该jobs
命令查看那些后台进程的索引列表。kill %1
您可以通过运行或kill %2
使用数字作为进程的索引来终止后台进程。