如何判断 Raspberry Pi 启动时运行哪些服务?(raspbian)

如何判断 Raspberry Pi 启动时运行哪些服务?(raspbian)

我有一些在启动时运行的服务,但我实际上忘记了如何设置它们!如果我想更改它们的活动,我该怎么做?例如,也许我想禁用服务在启动时启动,或者也许我想使用其他方法启动它。

具体来说,我有一个在启动时成功运行的 openvpn 服务,但一些教程说我应该将文件共享程序的服务与 vpn 本身绑定,这样如果 vpn 出现故障,文件共享服务也会出现故障。但我认为我的 vpn 的自动运行可能使事情变得复杂,我应该禁用它或修改它的启动方式。但如何检查呢?

答案1

我假设你有一个使用 raspian 的 Raspberry,据我所知,它还没有转移到systemd。本例中答案如下。

编辑:对于 systemd(Jessie 或更高版本),请参见底部

首先,你可以确定哪个系统是现在通过以下命令运行:

  sudo service --status-all

您将获得类似这样的列表:

  [ + ]  triggerhappy
  [ + ]  udev
  [ ? ]  udev-mtab
  [ ? ]  umountfs
  [ ? ]  umountnfs.sh
  [ ? ]  umountroot
  [ - ]  urandom
  [ + ]  vsftpd
  [ + ]  weewx
  [ - ]  x11-common

+指示服务正在运行,-的服务不是跑步,?的不允许的服务地位作为可能的命令:它们大多是不需要一直运行的命令,只是偶尔运行。

回到你的问题,你需要理解运行级别Linux 中的运行级别。运行级别 (0-6 + S) 标识哪些服务可以/必须运行。引导顺序从初始运行级别(在/etc/inittab在我的 Raspberry 中

 # The default runlevel.
 id:2:initdefault:

此行将其标识为 2,然后前进到发行版标准最终运行级别(从 2 到 5)。您可以使用以下命令识别当前运行级别

 # runlevel
 N 2

(在我的例子中,是无头服务器)。其他运行级别是(同样来自 é/etc/inittab*):

 # Runlevel 0 is halt.
 # Runlevel 1 is single-user.
 # Runlevels 2-5 are multi-user.
 # Runlevel 6 is reboot.

单个用户(1)通常也被标识为S。

在正常启动中,您从 2 开始,一直到 5。要查找在此过程中启动的服务,请发出以下命令:

 # grep -nrI Default-Start /etc/init.d
 umountroot:7:# Default-Start:
 checkroot.sh:8:# Default-Start:     S
 kbd:6:# Default-Start:     S
 isc-dhcp-server:11:# Default-Start:     2 3 4 5
 mountkernfs.sh:7:# Default-Start:     S
 hostname.sh:7:# Default-Start:     S
 mountnfs.sh:7:# Default-Start:     S
 halt:6:# Default-Start:
 dphys-swapfile:20:# Default-Start:     2 3 4 5
 bootlogs:7:# Default-Start:     1 2 3 4 5
 rc.local:6:# Default-Start:     2 3 4 5
 hostapd:9:# Default-Start:      2 3 4 5
 keyboard-setup:8:# Default-Start:     S
 lightdm:7:# Default-Start:     2 3 4 5
 procps:11:# Default-Start:     S
 mysql:9:# Default-Start:     2 3 4 5
 single:6:# Default-Start:     1
 vsftpd:7:# Default-Start:       2 3 4 5
 samba:7:# Default-Start:     2 3 4 5
 mountall.sh:6:# Default-Start:     S
 weewx:20:# Default-Start:     2 3 4 5
 umountnfs.sh:7:# Default-Start:
 triggerhappy:6:# Default-Start:     2 3 4 5
 ifplugd:24:# Default-Start:     2 3 4 5
 alsa-utils:9:# Default-Start:     S
 bootmisc.sh:7:# Default-Start:     S
 sendsigs:6:# Default-Start:
 console-setup:7:# Default-Start:     S
 nfs-common:7:# Default-Start:     2 3 4 5 S
 checkroot-bootclean.sh:6:# Default-Start:     S
 rsyslog:7:# Default-Start:     2 3 4 5
 x11-common:7:# Default-Start:     S
 mountdevsubfs.sh:7:# Default-Start:     S
 cron:10:# Default-Start:     2 3 4 5
 mountnfs-bootclean.sh:6:# Default-Start:     S
 mountall-bootclean.sh:6:# Default-Start:     S
 screen-cleanup:11:# Default-Start:     S
 udev:6:# Default-Start:     S
 ssh:7:# Default-Start:  2 3 4 5
 haveged:8:# Default-Start:     2 3 4 5
 hwclock.sh:26:# Default-Start:     S
 plymouth:9:# Default-Start:     2 3 4 5
 motd:7:# Default-Start:     1 2 3 4 5
 killprocs:6:# Default-Start:     1
 networking:6:# Default-Start:     S
 fake-hwclock:9:# Default-Start:     S
 udev-mtab:6:# Default-Start:     S
 apache2:6:# Default-Start:     2 3 4 5
 reboot:6:# Default-Start:
 umountfs:6:# Default-Start:
 plymouth-log:9:# Default-Start: S
 openvpn:11:# Default-Start:     2 3 4 5
 kmod:8:# Default-Start:     S
 ntp:7:# Default-Start:   2 3 4 5
 rpcbind:9:# Default-Start:     S 2 3 4 5
 urandom:6:# Default-Start:     S
 rmnologin:6:# Default-Start:     2 3 4 5
 checkfs.sh:7:# Default-Start:     S
 sudo:8:# Default-Start:     2 3 4 5
 mtab.sh:6:# Default-Start:     S
 dbus:6:# Default-Start:     2 3 4 5
 rsync:8:# Default-Start:     2 3 4 5

这将打印以以下内容开头的行默认开始在所有文件中/etc/init.d/,其中保存了用于标识各种服务的文件。 上述行标识了每个服务要启动的运行级别。 如果服务在运行级别 N 启动,则当系统进入 N+1 时,无需再次启动该服务,但如果发现该服务未运行,则会启动该服务。

这让您准确了解服务启动的不同阶段。但在同一运行级别中,Required-Start 和 Should-Start 行定义了相关服务的硬依赖关系和软依赖关系,IE服务必须运行并应该在被检查的服务之前运行。如果没有必启动服务,相关服务将失败;如果没有应启动服务,则不会出现一般性失败,可能只是缺少一些有用的功能。使用必停止和应停止时也会发生同样的情况。

系统管理

列出所有服务的命令是

systemctl list-unit-files

将会显示很多信息。要选择所有服务已启用IE,那些在启动时启动的,只需 grep 上述命令如下:

 systemctl list-unit-files | grep enabled 

我更喜欢这个命令systemctl 列表单位:不同之处在于,这个只会显示你的操作系统内存中的服务(操作系统认为它需要的服务),而systemctl 列表单元文件将显示全部已安装的服务,包括蒙面IE那些永远不应该启动的,甚至手动启动的),以及那些它将不是激活,这被称为静止的换句话说,我建议的命令比仅列出的命令更全面积极的服务。

注意::systemd 与以前的 init 系统有很大不同。特别是,它没有运行级别, 但目标运行级别由于兼容性原因仍然存在,并且可以通过列出所有可用目标来将其视为特定目标

systemctl list-unit-files --type=target

你可以通过以下方式查看当前目标

$ systemctl get-default
  graphical.target

有关更多信息,您可以阅读DigitalOcean 出色的介绍页面

答案2

对于 Raspberry Pi 上的简单启动服务管理,我推荐工具rcconf。它允许您轻松打开/关闭服务/etc/init.d/。您还可以查看它们是否已启用并会在启动时运行。

安装该工具

sudo apt-get install rcconf

使用文本用户界面非常简单

sudo rcconf

答案3

sudo nano /etc/rc.local

您可以在此处插入要在启动时运行的批处理文件或命令。我也会在启动时自动运行 Openvpn :)

相关内容