`sudo reboot` vs`reboot`-有什么区别?


60

据我所知,我最近发现它的reboot效果和一样好sudo reboot。但是,在很多情况下,我看到有人对sudo reboot。为什么是这样?他们是一样的,只是个人喜好吗?还是不同?会sudo reboot做更多的事情reboot吗?


1
普通用户重启系统甚至听起来不合逻辑。应该可以由root用户(只有root用户)更改root进程(init)的运行级别。您甚至不能由任何其他用户访问sysrq的文件系统快捷方式。但是!您可以通过sysrq 按键重新启动linux ,它不需要sudo:)
Svetlana Linuxenko

sudo是“超级用户使用”的缩写。它对命令本身没有影响(这是reboot),它只是使它以超级用户而不是您的身份运行。它用于执行您可能没有权限执行的操作,但不会更改完成的操作。如果您已经具有运行的权限reboot,那么就可以运行reboot
Lee Crocker '18

传统上,这需要扎根。旧习惯很难打破。
托尔比约恩Ravn的安德森

6
@SvetlanaLinuxenko> 普通用户重新启动系统听起来似乎不合逻辑。如果我们不允许他们干净地重新启动,坐在控制台上的用户只需按电源按钮或拔下插头即可。
卡兹(Kaz)

如果您不是root用户,许多其他发行版将不允许您重新启动。
user253751 '18

Answers:


114

在Ubuntu 14.10及更早版本上,sudo是必需的。

15.04中Systemd的引入改变了Ubuntu处理shutdown和的方式reboot

  1. 当单个用户登录时,sudo则没有必要。如果有多个用户登录,则sudo是必需的。

  2. 应用程序可能会抑制shutdown和抑制reboot。您可以使用来覆盖这些禁止sudo

  3. 通过的单个用户ssh仍然需要sudo


我认为这也包括单个用户登录过多次。
mckenzm

6
它与连接的用户数量无关。不使用而重新启动的能力sudo取决于是否在计算机的控制台上。如果您使用ssh进入计算机,sudo即使您是唯一登录的用户,如果没有SSH,您仍然无法重新启动它。相反,如果您在控制台上,sudo即使其他用户不在,也仍然可以重新启动。远程连接。
Dave Sherohman '18

1
@DaveSherohman:不一定是正确的-systemd仍然使用单独的polkit操作,具体取决于您是否是唯一登录的人,或者是否有多个人登录。意思是,发行版(或系统管理员)可以很容易地使它们的行为有所不同。
grawity

21

在我的14.04机器上,当我(作为普通用户)键入时reboot,我得到

reboot: Need to be root

那是区别。

正如Terrance在评论中指出的那样,它在后来的系统上的工作方式与我的不同。因此,您可能会看到习惯于打字的旧文章和/或用户(例如我)sudo reboot


有趣!我现在想知道的是,是否在14.04和17.10之间进行了某些更改以使您不需要成为root用户reboot,或者我的系统上是否有其他因素在起作用。
Zeke Egherman,

3
@ZekeEgherman我实际上认为,区别在于它们从命令的Upstart更改为Systemd时发生了。当我查看重新启动命令时,它指向的链接/bin/systemctl。您可以输入进行检查ls -al $(which reboot)
Terrance

@terrance,我还看到了的链接/bin/systemct1,您是哪个版本?
Zeke Egherman,

这太有趣了!我只是在我的18.04预发行虚拟机上尝试过,它就如您所说的那样工作。@Terrance,我认为您应该写下真正的答案。
有机大理石

@ZekeEgherman 16.04。Ubuntu在15.04切换到Systemd。因此,14.04仍将是Upstart,如果您要调用它,则它将是initd。
Terrance

9

sudo reboot出于兼容性原因,在教程/ how-tos中使用

虽然reboot 可能有效

  • 如果您是root
  • 如果您systemd
  • 如果没有应用程序阻止重新启动

sudo reboot将“ 永远 ” *工作,不管

  • 是否你是根
  • 是否还有其他用户登录
  • 是否有应用程序阻止
  • 是否init是systemd,System V,Upstart等

*好吧,它肯定会尝试-缺少某些阻止/行为不正常的内核进程。


如果安装了sudo,它将始终*有效。
大街

7

对于我自己来说,如果我键入很多内容reboot,在观看YouTube和其他打开的标签页时,Chrome浏览器会禁止我输入该内容。所以我被迫使用sudo reboot更大的锤子。

在Ubuntu 16.04中


4

感谢您的讨论,我很高兴现在能理解这一点!

正如Terrance所述,在版本15.04中,他们从命令的Upstart切换到Systemd。此更改意味着reboot不再需要root特权。

至于* nix社区指示的 sudo reboot原因,有一些潜在原因:

  • 习惯-人们非常习惯于必须sudo reboot重新启动,尽管事实上并不需要重新启动,
  • 未更新的用户-指导使用sudo reboot低于15.04的Ubuntu版本或使用Upstart命令的其他发行版的用户。

  • 兼容性-这对我来说似乎是最合理的:人们正在指示这样做,sudo reboot因为它确保无论如何都可以在所有* nix系统上重新启动。

附加说明:来自 user535733回答

15.04中对systemd的引入改变了Ubuntu处理关机和重启的方式:

  1. 当单个用户登录时,sudo则没有必要。如果有多个用户登录,则sudo是必需的。

  2. 应用程序可以禁止关机和重新启动。您可以使用来覆盖这些禁止sudo

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.