如何在后台运行询问密码的命令?

bub*_*ble 5 command-line process

我想运行一个命令sudo apt-get update &。但是,在按 Enter 后,当我按 for 时jobs,它会显示这些命令的状态为已停止。我的猜测是,通过将进程推入后台,我没有为其提供询问密码的机会。有没有办法在后台运行需要密码的进程?

Jam*_*lls 2

尝试输入sudo -ifirst end 然后apt-get update &或者只运行命令:

sudo -i && apt-get update &

您可以尝试的其他命令是:

gksudo && sudo apt-get update &

但我不确定这是否有效。

或者您可以尝试将您的用户添加到使用 sudo 时不需要输入密码的用户列表中。

为此,请 sudo visudo在终端中添加类型。然后添加行

%super_sudoers ALL=(ALL) NOPASSWD: ALL

或者无论您想如何称呼该组(您可以更改“super_sudoers”),然后通过键入将您的用户添加到该组

usermod -a -G super_sudoers yourusername(显然用您的用户名替换您的用户名)

并重新启动(或者可能注销/登录有效,不确定),发现您可以键入 suo 命令而无需输入密码。当然,这意味着其他人可以确保您始终锁定计算机并且不启用自动登录。


Rom*_*uet 2

首先,“这不是最佳实践”
但你可以使用命令sudo -S

Sudo -S:
-S(stdin)选项使 sudo 从标准输入而不是终端设备读取密码。

因此,转到终端并输入:

echo 'yourpassword' | sudo -S apt-get update 1>> /home/user/myaptupd.log 2>&1 &
Run Code Online (Sandbox Code Playgroud)

它将运行命令 apt-get update 而不提示输入密码和背景,并将 stdout 和 stderr 重定向(附加)到您家中名为myaptupd.log
的日志文件,以防万一您可以检查一切是否正常使用 apt-get update 命令。

这是一个很大的命令,您可以将此命令作为别名放在 .bashrc 文件中。例如:在终端中输入:

gedit /home/user/.bashrc
Run Code Online (Sandbox Code Playgroud)

将此行添加到文件末尾

alias myaptupd='echo 'yourpassword' | sudo -S apt-get update 1>> /home/user/myaptupd.log 2>&1 &'
Run Code Online (Sandbox Code Playgroud)

重新加载 .bashrc
在终端中转到您的主目录,只需键入:

cd
Run Code Online (Sandbox Code Playgroud)

然后输入:

source .bashrc
Run Code Online (Sandbox Code Playgroud)

或者

. .bashrc
Run Code Online (Sandbox Code Playgroud)

现在在终端中只需输入别名作为命令:

myaptupd
Run Code Online (Sandbox Code Playgroud)

您可以使用命令检查jobs状态。

另一方面,您可以创建一个 bash 脚本并命名为 myaptupd.sh
例如:

#! /bin/bash
echo 'yourpassword' | sudo -S apt-get update 1>> /home/user/myaptupd.log 2>&1 &
Run Code Online (Sandbox Code Playgroud)

为了安全起见,您可以将权限设置为:

chmod 700 /path/to/the/myaptupd.sh
Run Code Online (Sandbox Code Playgroud)

然后您可以使用以下命令调用脚本:

 bash /path/to/the/myaptupd.sh
Run Code Online (Sandbox Code Playgroud)

或者在 .bashrc 中创建一个别名

alias myaptupd='bash /path/to/the/myaptupd.sh'
Run Code Online (Sandbox Code Playgroud)

重新加载 .bashrc (就像之前解释的那样),您可以输入别名来运行脚本:

myaptupd
Run Code Online (Sandbox Code Playgroud)

希望这会有所帮助!

问候。