nohup有一个sudo命令 - 似乎没有用

时间:2014-02-03 16:42:00

标签: bash background-process sudo nohup

我读过this和其他几篇文章,但我无法弄明白。这就是我所说的:

  1. sudo nohupnohup sudo(我已经尝试过)没有后台&的命令(因此您可以在分离之前输入密码)
  2. 输入密码
  3. ^Z然后bg
  4. disown pid(由于某种原因不起作用)
  5. 退出
  6. 这是输出:

    [user@localhost ~]$ nohup sudo dd if=/dev/zero of=/dev/sda bs=1M
    nohup: ignoring input and appending output to ‘nohup.out’
    [sudo] password for user: 
    ^Z
    [1]+  Stopped                 nohup sudo dd if=/dev/zero of=/dev/sda bs=1M
    [user@localhost ~]$ bg
    [1]+ nohup sudo dd if=/dev/zero of=/dev/sda bs=1M &
    [user@localhost ~]$ sudo ps | grep dd
     2458 pts/32   00:00:00 dd
    [user@localhost ~]$ disown 2458
    -bash: disown: 2458: no such job
    [user@localhost ~]$ logout
    Connection to [server] closed.
    $ remote
    Last login: Mon Feb  3 11:32:59 2014 from [...]
    [user@localhost ~]$ sudo ps | grep dd
    [sudo] password for user: 
    [user@localhost ~]$
    

    所以这个过程已经过去了。我尝试过其他几种组合但没有成功。有什么想法使这项工作?

2 个答案:

答案 0 :(得分:2)

使用-b sudo选项指示它在后台运行给定命令。作业控制不起作用,因为nohup进程不是当前shell的子进程,而是sudo进程的子进程。

sudo -b nohup dd if=/dev/zero of=/dev/sda bs=1M

答案 1 :(得分:0)

你没有正确使用disown,正确的参数应该是jobspec('%'+作业号)。

在您的示例中,您应该disown %1而不是disown 2458

要列出当前的shell作业列表,您可以使用bash builtin jobs