标签: startup

`systemctl` 的 --now 开关

手册页所述,

systemctl --now enable servicename
Run Code Online (Sandbox Code Playgroud)

应该启用启动服务。

但在许多不同的发行版下,它对我来说从来没有用过。

而输出:

systemctl is-enabled 启用,

systemctl is-active 该服务仍处于非活动状态。

这个开关有什么用?

我尝试过其他组合,例如:

systemctl enable --now servicename
Run Code Online (Sandbox Code Playgroud)

和:

systemctl enable servicename --now
Run Code Online (Sandbox Code Playgroud)

但还是一样;我systemctl start servicename每次都必须手动,即使上一个命令(即enable部件)成功执行。

应用程序对systemd服务的实现是否应该支持它在单元文件中的某处实现该功能;许多知名服务没有遵循,这让我认为它完全无用;我假设考虑过它。

startup systemd services systemctl

15
推荐指数
1
解决办法
1万
查看次数

Systemd 单元激活与启用

有人可以为我澄清systemd 单元的“启用”“激活”之间的区别。据说,如果单元有 [Install] 部分,则应调用enable,否则只需激活即可

这是如何在启动过程中处理的?Systemd 会自动做出正确的决定吗?

startup systemd

14
推荐指数
2
解决办法
5万
查看次数

Systemd:如何在网络完全连接后启动 systemd 服务?

背景

我正在编写一个要在 Raspberry Pi 2 上的 Raspbain 中运行的简单脚本,只需打开一个 LED 以指示我已准备好从台式计算机连接 SSH。

脚本在这里并不重要,只提一下,因为我使用频率控制,所以脚本运行无限循环,频繁地打开和关闭 LED。所以这是一个简单服务的例子。但是,至少这个问题的公认答案建议我将类型设置为空闲。所以我的服务文件看起来像

[Unit]
Description=Turn on LED after SSH is ready

[Service]
Type=idle
ExecStart=/usr/bin/sshready.py

[Install]
Wants=network-online.target
After=network-online.target
Run Code Online (Sandbox Code Playgroud)

影响

该服务按预期运行。但是,我注意到在 LED 亮起后立即在台式计算机中启动 Putty 时,登录提示不会立即出现。所以我检查了

$ systemd-analyze plot > output.svg
Run Code Online (Sandbox Code Playgroud)

结果显示

在此处输入图片说明

看起来我的服务没有在 之后启动network-online.target,这里有什么问题,我该如何解决?

startup systemd

14
推荐指数
2
解决办法
3万
查看次数

由于缺少外部磁盘而无法启动

使用 Fedora 24,我在 /etc/fstab 中配置了一个外部 USB 驱动器:

UUID=6826692e-79f4-4423-8467-cef4d5e840c5 /backup/external      ext4    defaults  0 0
Run Code Online (Sandbox Code Playgroud)

当我拔下 USB 磁盘并重新启动时,它无法启动

那是错误信息:

[ TIME ] Timed out waiting for device dev-disk-by\x2duuid-6826692e\x2d79f4\x2d4423\x2d8467\x2dcef4d5e840c5.device.
[DEPEND] Dependency failed for /backup/external.
[DEPEND] Dependency failed for Local File Systems.
[DEPEND] Dependency failed for Relabel all filesystems, if necessary.
[DEPEND] Dependency failed for Mark the need to relabel after reboot.
Run Code Online (Sandbox Code Playgroud)

为什么不开机?这是一个错误吗?一项功能?systemd的?我知道这是我的错误,我不得不将选项设置为“noauto”,但无论如何,为什么启动过程会因为缺少 FHS 的非关键目录而停止?

linux startup fstab external-hdd systemd-boot

14
推荐指数
1
解决办法
1万
查看次数

为什么我的 xmodmap 命令不会在启动/登录时运行?

我想在每次登录时(或每次启动时,如果这不起作用)运行此命令: xmodmap -e 'keysym Delete = Menu' -e 'keysym Menu = Delete'

我尝试了很多东西。我把命令放在System > Preferences > Startup Applications. 我把它放在一个.sh文件中,标记它chmod +x并将该文件放在System > Preferences > Startup Applications. 我把脚本放在/etc/init.d. 我把命令放在~/.profile. 似乎没有任何效果。

最后,我把它放在我的~/.profile

touch test1
xmodmap -e 'keysym Delete = Menu' -e 'keysym Menu = Delete'
touch test2
Run Code Online (Sandbox Code Playgroud)

test1 和 test2 都被创建,但键仍然没有重新映射。如果我只是复制/粘贴命令并手动运行它,它工作正常。但它不会在登录时运行。有任何想法吗?

startup login ubuntu

13
推荐指数
2
解决办法
7972
查看次数

通过 bash 脚本使用 systemctl 编辑?

我经常安装 Debian。为此,我有一个全自动的 preseed.cfg;在 preseed 结束时,它从我的 TFTP 服务器下载并运行 postinstall.sh 脚本,该脚本执行一些额外的自定义。

我正在从 GNOME 切换到 LXQTE,并使用 SDDM 而不是 GDM。但是,对于我的硬件而言,SDDM 尝试启动得太快。为了解决这个问题,我一直在使用systemctl edit sddm添加以下内容:

[Service]
ExecStartPre=/bin/sleep 5
Run Code Online (Sandbox Code Playgroud)

这很好用,我想通过将它添加到 postinstall.sh 脚本来自动化这个过程。但是,我不知道如何systemctl edit通过 bash 脚本将文件内容传递给。我怎样才能做到这一点?

startup shell-script systemd

13
推荐指数
3
解决办法
9244
查看次数

在 Linux 上,是否有 rc.local 等价物用于关闭?

我有一些我运行的命令,rc.local所以它们在启动序列中最后运行。我想知道是否有类似的工具可以在关闭时撤消这些命令的结果,例如rc.shutdown. 理想情况下,它将在任何其他/etc/init.d脚本之前运行。

linux startup shutdown

12
推荐指数
1
解决办法
8465
查看次数

在 BusyBox 中创建和控制启动脚本

我在 BusyBox 中编译了一个自定义的 linux 内核。BusyBoxinit不支持运行级别。当内核在 BusyBox 中启动时,它首先执行init它在/etc/inittab. BusyBoxinit没有/etc/inittab. 当没有inittab找到时,它具有以下行为:

::sysinit:/etc/init.d/rcS
Run Code Online (Sandbox Code Playgroud)

这部分对我来说很清楚,但我想知道如何管理启动网络、创建串行端口或启动java进程的守护进程。我查看了驻留在其中的脚本,/etc/init.d/但我不明白如何管理它们。我正在寻找一个很好的教程或解决方案来自己控制这些服务,而无需像buildroot. 我想了解这些脚本是如何工作的以及如何在中创建设备/dev/(现在我只有consolettyAM0)。

linux startup busybox init.d runlevel

12
推荐指数
2
解决办法
5万
查看次数

启动时启动的服务不适用于 update-rc.d 命令

我已经在基于 Ubuntu 的服务器上安装了 redis 服务器,因此我可以启动/停止/重启 redis 服务器。redis_server.sh 已经在 /etc/init.d 中。

现在我想让 redis 在启动时启动。我从一个网站了解到,通过使用 update_rc.d 命令,我可以在启动时添加/删除服务。

我尝试了 update-rc.d 在启动时添加启动,这不起作用:

root@ip-172-31-4-108:/etc/init.d# update-rc.d redis-server defaults
//System start/stop links for /etc/init.d/redis-server already exist.
Run Code Online (Sandbox Code Playgroud)

另外,有一些服务我不想开机就启动,所以我尝试了:

root@ip-172-31-4-108:/etc/init.d# update-rc.d reids_6379 remove
 Removing any system startup links for /etc/init.d/reids_6379 ...
Run Code Online (Sandbox Code Playgroud)

但是下次重新启动时,我仍然看到该服务在启动时运行。

startup ubuntu upstart

12
推荐指数
2
解决办法
5万
查看次数

如何在启动时自动启用 ufw?

sudo ufw enable
Run Code Online (Sandbox Code Playgroud)

防火墙在系统启动时处于活动状态并启用

sudo ufw status
Status: active
Run Code Online (Sandbox Code Playgroud)

但是在我重新启动系统并运行后sudo ufw status,我收到消息:

Status: inactive
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题?

顺便说一下,我的/etc/ufw/ufw.conf确实有ENABLED=yes.

startup ufw

12
推荐指数
2
解决办法
3万
查看次数