我可以在 ssh 会话中 nohup/恢复现有的 tar 进程启动吗?

我可以在 ssh 会话中 nohup/恢复现有的 tar 进程启动吗?

首先,如果我停止 tar 进程,它会从中断的地方恢复吗?还是必须再次浏览所有目录(许多目录和文件)。

其次,我是否正确地“否认”了这一过程?

  1. 我通过 ssh 进入了我的 linux(ubuntu)服务器。

  2. 我使用“tar -cf /mnt/backup.tar /var/www”启动了一个进程

  3. 几个小时后,该进程仍在运行,我需要关闭我的台式计算机。

  4. 我按下 Ctrl+Z 来暂停该进程,

  5. 然后运行“bg”在后台恢复它。

  6. 然后运行'disown -h tar'

  7. 然后运行“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/
    
  8. 我看到 tar 命令并且它的“STAT”列显示 D。这是否意味着分离?

  9. 我不太清楚这个“工作”到底是什么,我猜是“tar”。

请告诉我我的做法是否正确,现在是否可以安全地注销并关闭 ssh 会话。我不希望必须重新启动此过程。

另请注意,这个问题在这里已经得到一定程度的回答: 我可以 nohup/screen 一个已经启动的进程吗?

然而,我扩展了这个问题,因为我对使用 disown 以及“工作”实际上是什么感到有点困惑。

答案1

当您退出交互式 bash 登录 shell 时,它会向所有子进程发送 SIGHUP,除非 shell 选项huponexit设置为关闭。

当大多数用户空间进程收到 SIGHUP 时,它们就会退出。

当您 时disown -h,您正在标记进程以防止 bash 在退出时发送 SIGHUP,无论 shell 选项如何。您也可以在命令前加上前缀来nohup重现同样的行为。

就 STAT D 而言:

不可中断睡眠状态是无法处理信号(例如等待磁盘或网络 IO(输入/输出))的睡眠状态。

相关内容