Bash 诺胡普';正在调用sudo命令-不';好像不行

Bash 诺胡普';正在调用sudo命令-不';好像不行,bash,background-process,sudo,nohup,Bash,Background Process,Sudo,Nohup,我读过很多书和其他文章,但我不明白这一点。这是我总结的: sudo-nohup或nohup-sudo(我已经尝试了这两种方法)不带背景的命令&(因此,您可以在分离密码之前输入密码) 输入密码 ^Z然后bg disownpid(由于某种原因不起作用) 注销 以下是输出: [user@localhost ~]$ nohup sudo dd if=/dev/zero of=/dev/sda bs=1M nohup: ignoring input and appending output to ‘noh

我读过很多书和其他文章,但我不明白这一点。这是我总结的:

  • sudo-nohup
    nohup-sudo
    (我已经尝试了这两种方法)不带背景的命令
    &
    (因此,您可以在分离密码之前输入密码)
  • 输入密码
  • ^Z
    然后
    bg
  • disown
    pid(由于某种原因不起作用)
  • 注销
  • 以下是输出:

    [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 ~]$
    

    因此,这一过程已经结束。我尝试过其他几种组合,但没有成功。有什么办法可以让它工作吗?

    如果您没有正确使用disown,正确的参数应该是jobspec(“%”+job number)

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


    要列出当前的shell作业列表,可以使用bash内置的
    作业

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

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

    不,它不起作用。我可以
    disown%1
    ,它会从
    jobs
    中消失,但注销后该过程仍会消失。无论我是否使用
    sudo nohup…
    或只是
    sudo…
    ,都会发生这种情况。