首先,如果我停止 tar 进程,它会从中断的地方恢复吗?还是必须再次浏览所有目录(许多目录和文件)。
其次,我是否正确地“否认”了这一过程?
我通过 ssh 进入了我的 linux(ubuntu)服务器。
我使用“tar -cf /mnt/backup.tar /var/www”启动了一个进程
几个小时后,该进程仍在运行,我需要关闭我的台式计算机。
我按下 Ctrl+Z 来暂停该进程,
然后运行“bg”在后台恢复它。
然后运行'disown -h tar'
然后运行“ps faux”
root 8760 0.0 0.1 8964 3036 ? Ss Aug21 0:21 \_ sshd: root@pts/0 root 8762 0.0 0.1 4408 1880 pts/0 Ss+ Aug21 0:00 | \_ -bash root 23184 0.2 0.0 3708 1072 pts/0 D Aug24 3:30 | \_ tar -cf /mnt/backup.tar www/
我看到 tar 命令并且它的“STAT”列显示 D。这是否意味着分离?
我不太清楚这个“工作”到底是什么,我猜是“tar”。
请告诉我我的做法是否正确,现在是否可以安全地注销并关闭 ssh 会话。我不希望必须重新启动此过程。
另请注意,这个问题在这里已经得到一定程度的回答: 我可以 nohup/screen 一个已经启动的进程吗?
然而,我扩展了这个问题,因为我对使用 disown 以及“工作”实际上是什么感到有点困惑。
答案1
当您退出交互式 bash 登录 shell 时,它会向所有子进程发送 SIGHUP,除非 shell 选项huponexit
设置为关闭。
当大多数用户空间进程收到 SIGHUP 时,它们就会退出。
当您 时disown -h
,您正在标记进程以防止 bash 在退出时发送 SIGHUP,无论 shell 选项如何。您也可以在命令前加上前缀来nohup
重现同样的行为。
就 STAT D 而言:
不可中断睡眠状态是无法处理信号(例如等待磁盘或网络 IO(输入/输出))的睡眠状态。