![如何在运行命令后自动重启](https://linux22.com/image/866594/%E5%A6%82%E4%BD%95%E5%9C%A8%E8%BF%90%E8%A1%8C%E5%91%BD%E4%BB%A4%E5%90%8E%E8%87%AA%E5%8A%A8%E9%87%8D%E5%90%AF.png)
我正在一堆机器上安装更新,我只想运行:
sudo apt-get update
sudo apt-get upgrade
sudo reboot
在所有机器上一次性执行所有命令(当然是在几个小时后),让它们运行而无需我输入密码。但是,上述命令不起作用,因为它们都需要 root 权限,因此每次都需要我的密码。将它们全部运行在一个sudo
连接的 by下&&
似乎不起作用。此外,如果更新有发行说明,它会显示任何发行说明并暂停,直到我退出less
。
我如何实现这个目标?
答案1
sudo -s
会提示你输入一次密码,然后让你留在 root shell 中,直到你exit
。在那里你可以串联命令,如apt-get update && apt-get upgrade -y && reboot
。
答案2
所以你不想让你的用户必须输入密码才能使用 sudo?你可以在以下位置添加一行这样的代码,/etc/sudoers
或者在以下位置添加一个文件:/etc/sudoers.d/
username ALL=(ALL) NOPASSWD: ALL
或者仅允许一些程序,如reboot
和apt-get
:
username ALL=(ALL) NOPASSWD: /sbin/reboot, /usr/bin/apt-get
可能还想研究一些apt-get
选项,例如:
-q, --quiet
Quiet; produces output suitable for logging, omitting progress
indicators. More q's will produce more quiet up to a maximum of 2.
You can also use -q=# to set the quiet level, overriding the
configuration file. Note that quiet level 2 implies -y; you should
never use -qq without a no-action modifier such as -d, --print-uris
or -s as APT may decide to do something you did not expect.
Configuration Item: quiet.
-y, --yes, --assume-yes
Automatic yes to prompts; assume "yes" as answer to all prompts and
run non-interactively. If an undesirable situation, such as
changing a held package, trying to install a unauthenticated
package or removing an essential package occurs then apt-get will
abort. Configuration Item: APT::Get::Assume-Yes.
--force-yes
Force yes; this is a dangerous option that will cause apt to
continue without prompting if it is doing something potentially
harmful. It should not be used except in very special situations.
Using force-yes can potentially destroy your system! Configuration
Item: APT::Get::force-yes.
或者你可以盲目地将几个换行符或“q”输入到 中apt-get
,我曾经安装过一个包,它会忽略apt
像 这样的选项-y
并等待按键(可能在它的 preinst 或 postinst 脚本中)。可以尝试类似这样的操作:
{
sleep 20
echo
echo "q"
} | apt-get upgrade
如果你在每台机器上都安装完全相同的软件包,则不需要通过互联网逐个进行安装,你可以使用以下命令下载一次所有必需的update
文件:
upgrade
.deb
sudo apt-get install --download-only [packages]
或者
sudo apt-get upgrade --download-only
然后从本地/共享文件夹安装它们
sudo dpkg -iR /folder_of_debs
答案3
如果你是“root”,最简单的解决方案是
apt-get -y update && apt-get -y upgrade && reboot
如果您是系统上的用户,首先确保该用户在 sudoers 中启用,然后输入:
sudo apt-get -y update && apt-get -y upgrade && reboot