bub*_*ble 5 command-line process
我想运行一个命令sudo apt-get update &。但是,在按 Enter 后,当我按 for 时jobs,它会显示这些命令的状态为已停止。我的猜测是,通过将进程推入后台,我没有为其提供询问密码的机会。有没有办法在后台运行需要密码的进程?
尝试输入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 命令而无需输入密码。当然,这意味着其他人可以确保您始终锁定计算机并且不启用自动登录。
首先,“这不是最佳实践”。
但你可以使用命令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)
希望这会有所帮助!
问候。