标签: systemctl

我应该如何启用 UFW:通过“systemctl enable”或“ufw enable”?

我知道两种启动 UFW 的方法:通过 systemctl 和通过 ufw 本身。例如,当我使用时systemctl enable ufw,我得到以下状态:

systemctl status ufw

? ufw.service - CLI Netfilter Manager
   Loaded: loaded (/usr/lib/systemd/system/ufw.service; enabled; vendor preset:>
   Active: active (exited) since Sun 2019-12-01 12:34:29 +05; 6min ago
Run Code Online (Sandbox Code Playgroud)

但 ufw 本身说:

ufw status verbose

Status: inactive
Run Code Online (Sandbox Code Playgroud)

我无法通过它看到规则,GUFW 实用程序说 UFW 处于非活动状态。但如果我这样做:

systemctl disable ufw
systemctl stop ufw
ufw enable
ufw status verbose

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
Run Code Online (Sandbox Code Playgroud)

然后我可以使用 GUFW 并查看 UFW 实用程序中的详细状态和规则。

那么从 …

ufw systemctl

5
推荐指数
1
解决办法
4651
查看次数

在 systemd 服务中 Restart=on-abort 是什么意思?

我正在使用一项服务,但它意外死亡(停止)。无论它如何停止,我都想让它自动重启!它已配置,Restart=on-abort并且不会重新启动。我没有编写服务,它来自另一个供应商,所以虽然我想追踪服务崩溃的根本原因,但我还需要一个解决方案来保持系统运行,直到找到根本原因。该服务每天死零到三次,所以不会太频繁。

该服务当前设置Restart=on-abort为在服务文件中定义的/etc/systemd/system/someone-elses.service

那么是什么Restart=on-abort意思呢?

我进行了搜索并了解了 restart= 的不同值的含义,但在手册页中没有找到任何内容:

systemctl

5
推荐指数
1
解决办法
4883
查看次数

systemd-journald 持久日志不适用于绑定挂载 /var/log

我正在使用 Yocto 为 SystemD 版本 241 的小型嵌入式 Linux 系统生成自定义映像。根文件系统是只读的。我使用绑定安装和overlayfs 使/var/log/journal 目录存在于单独的读/写分区上。我有一个问题,systemd-journald 得到“Amnesia”并且不记得以前的引导日志,即使它们在持久的读/写文件系统上。这意味着即使日志文件在文件系统上存在且有效,日志也无法访问或清除以前启动时的旧日志文件。

Yocto 易失性绑定

# Setup overlayfs binds for various RW files
VOLATILE_BINDS_append = " \
    /persistent-storage/var/log /var/log\n\
"
Run Code Online (Sandbox Code Playgroud)

路径 /var/log 存在:

root@me:/var/log# cd /var/log/
root@me:/var/log# ls -lrt
total 9
drwxr-xr-x 2 root root            1024 Jun  3 01:50 nginx
-rw-r--r-- 1 root root            5260 Jun  9 17:56 messages
drwxr-sr-x 5 root systemd-journal 1024 Jun  9 18:00 journal
root@me:/var/log# ls -lrt journal/
total 3
drwxr-sr-x 2 root systemd-journal 1024 Jun  9 …
Run Code Online (Sandbox Code Playgroud)

systemd yocto journalctl systemd-journald systemctl

5
推荐指数
1
解决办法
1105
查看次数

使用 ssh 和 sudo 错误远程重启服务

我正在使用以下命令尝试重新启动服务

ssh username@server "systemctl restart storeapp.service"
Run Code Online (Sandbox Code Playgroud)

但是,我收到以下错误消息。

Failed to stop storeapp.service: Interactive authentication required.
Run Code Online (Sandbox Code Playgroud)

然后我尝试

ssh -t username@server "systemctl restart storeapp.service"
Run Code Online (Sandbox Code Playgroud)

这失败了,因为它没有使用正确的用户名进行身份验证,它正在跳过username@server其他用户。 Authenticating as : otheruser. 我已经设置了 ssh 密钥。我怎么能克服这个?或者这是系统管理员权限问题?

如果我运行ssh username@server "systemctl status storeapp.service"它,我可以看到我的服务的状态。

linux ubuntu systemd systemctl

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

从服务重新启动时起显示日志日志

自上次重新启动服务以来,是否有一种规范的方法可以从 journalctl 获取所有日志?我想要做的是重新启动服务并立即查看自启动重新启动以来的所有日志。

我想出了:

$ unit=prometheus
$ sudo systemctl restart $unit
$ since=$(systemctl show $unit | grep StateChangeTimestamp= | awk -F= '{print $2}')
$ sudo systemctl status -n0 $unit && sudo journalctl -f -u $unit -S "$since"
Run Code Online (Sandbox Code Playgroud)

这可能会奏效,但我想知道是否有更具体的方法可以说:重新启动并从那时起给我所有日志。

journalctl systemctl

4
推荐指数
1
解决办法
764
查看次数

两个接口上的hostapd(两个配置文件)

我有两个无线接口,我想在每个接口上运行不同的 AP。(这两个硬件都不支持多个 SSID。)

我有.conf每个接口的文件。我如何hostapd自动使用它们?

这工作正常:

# hostapd -dd /etd/hostapd/hostapd.wlan0.conf /etc/hostapd/hostapd.wlan1.conf
Run Code Online (Sandbox Code Playgroud)

问题是让它自动工作。

一项主张是设定/etc/default/hostapd

DAEMON_CONF="/etc/hostapd/hostapd.wlan0.conf /etc/hostapd/hostapd.wlan1.conf"
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为整个字符串被解释为一个文件 - 该文件不存在。

我看到这是由/usr/lib/systemd/system/hostapd.serviceas使用的

ExecStart=/usr/sbin/hostapd -B -P /run/hostapd.pid -B $DAEMON_OPTS ${DAEMON_CONF}
Run Code Online (Sandbox Code Playgroud)

然而,我也看到了一些叫做的东西/usr/lib/systemd/system/hostapd@.service,它做了不同的事情:

ExecStart=/usr/sbin/hostapd -B -P /run/hostapd.%i.pid $DAEMON_OPTS /etc/hostapd/%i.conf
Run Code Online (Sandbox Code Playgroud)

(什么%i意思?)然而,systemctl似乎只知道hostapd而不是关于hostapd@

hostapd systemctl

4
推荐指数
1
解决办法
4728
查看次数

停止 systemctl 打印控制字符?

Systemd 喜欢使用控制代码在状态行前面插入一个点:

\n
$ systemctl status sshd\n\xe2\x97\x8f sshd.service - OpenSSH server daemon\n
Run Code Online (Sandbox Code Playgroud)\n

vis(注意 20 空格之前的 e2 97 8f):

\n
$ systemctl status sshd | od -tx1 | head -1\n0000000 e2 97 8f 20 73 73 68 64 2e 73 65 72 76 69 63 65\n
Run Code Online (Sandbox Code Playgroud)\n

我怎样才能阻止这个并让 systemd 仅使用 ASCII 字符集?

\n

使用 TERM=dumb、LANG=C 和 SYSTEMD_COLORS=false 只是改变点的颜色,并且:

\n
systemctl | strings\n
Run Code Online (Sandbox Code Playgroud)\n

感觉就像黑客。

\n

systemd systemctl

4
推荐指数
1
解决办法
1265
查看次数

Debian 中 chkconfig 的等效项是什么

Debian 中 chkconfig 的等效项是什么?

在 CentOS 6 上,我可以运行它来查看系统加载的服务:

chkconfig --list
Run Code Online (Sandbox Code Playgroud)

我可以设置一个服务在启动时启动,如下所示:

chkconfig <service_name> on
Run Code Online (Sandbox Code Playgroud)

是否有类似的二进制文件可以为 Debian 执行此操作?

澄清一下,我正在使用 Kali 滚动,但据我所知,这与 Debian 非常相似

[kali@kali:~/labs/discovery]$ lsb_release -da
No LSB modules are available.
Distributor ID: Kali
Description:    Kali GNU/Linux Rolling
Release:    2020.1
Codename:   kali-rolling

[kali@kali:~/labs/discovery]$ hostnamectl
   Static hostname: kali
         Icon name: computer-vm
           Chassis: vm
        Machine ID: d74933508486479e9b07e83b9a036776
           Boot ID: ece90367d8454f7fb795b9f2f1787091
    Virtualization: vmware
  Operating System: Kali GNU/Linux Rolling
            Kernel: Linux 5.4.0-kali4-amd64
      Architecture: x86-64
Run Code Online (Sandbox Code Playgroud)

debian systemd services chkconfig systemctl

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

Systemd 服务失败,退出代码状态 = 203/EXEC

我正在尝试创建一个在启动时运行的服务。该服务是我用 C++ 编写并编译的程序,位于我的用户主目录中。该程序打开一些 UDP 套接字并处于无限循环中,因此不会自动退出。我可以手动运行该程序,一切都按预期工作,但是当我运行systemctl start myservice然后检查状态时,我发现它没有运行。下面的错误结果+其他有用的信息。仅供参考,操作系统是 CentOS Stream。

输出来自systemctl status myservice

myservice.service - my serivce
    Loaded: loaded (/etc/systemd/system/myservice.service; disabled; vendor present: disabled)
    Active: failed (Result: exit-code) since <redacted unnecessary timestamp>
    Process 2101 ExecStart=/home/user/program (code=exited, status=203/EXEC)
  Main PID: 2101 (code=exited, status=203/EXEC)
Run Code Online (Sandbox Code Playgroud)

来自journalctl的错误消息

myservice.service: Main process exited, code=exited, status=203/EXEC
myservice.service: Failed with result 'exit-code'
myservice.service: Service RestartSec=2s expired, scheduling restart
Run Code Online (Sandbox Code Playgroud)

系统单元文件

[Unit]
Description=my service
After=network.target

[Service]
Type=simple
ExecStart=/home/user/program
User=user
WorkingDirectory=/home/user/
Restart=always
RestartSec=2
KillMode=process

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

我知道 203 状态通常意味着该文件不存在或没有适当的权限,因此下面的输出证明这不是这些问题(希望如此) …

systemd services journalctl systemctl

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

Debian 11 蓝牙 sap 驱动程序初始化失败

我尝试通过蓝牙将语音连接到笔记本电脑,当我连接到笔记本电脑时,笔记本电脑显示消息“ACTION II 设置失败”。我做了一些搜索,安装了非免费存储库,但它仍然无法工作。最终我找到了这篇文章并决定看看我的电脑会做出什么反应。我执行systemctl status bluetooth.service的结果是:

\n
    \xe2\x97\x8f bluetooth.service - Bluetooth service\n     Loaded: loaded (/lib/systemd/system/bluetooth.service; enabled; vendor preset: enabled)\n     Active: active (running) since Tue 2022-06-07 20:19:30 CEST; 20min ago\n       Docs: man:bluetoothd(8)\n   Main PID: 686 (bluetoothd)\n     Status: "Running"\n      Tasks: 1 (limit: 18984)\n     Memory: 6.7M\n        CPU: 105ms\n     CGroup: /system.slice/bluetooth.service\n             \xe2\x94\x94\xe2\x94\x80686 /usr/libexec/bluetooth/bluetoothd\nJun 07 20:19:30 debian bluetoothd[686]: profiles/sap/server.c:sap_server_register() Sap driver initialization failed.\nJun 07 20:19:30 debian bluetoothd[686]: sap-server: Operation not permitted (1)\nJun 07 20:20:40 debian bluetoothd[686]: src/service.c:btd_service_connect() a2dp-sink profile connect failed for …
Run Code Online (Sandbox Code Playgroud)

debian bluetooth systemctl

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