我知道两种启动 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 实用程序中的详细状态和规则。
那么从 …
我正在使用一项服务,但它意外死亡(停止)。无论它如何停止,我都想让它自动重启!它已配置,Restart=on-abort
并且不会重新启动。我没有编写服务,它来自另一个供应商,所以虽然我想追踪服务崩溃的根本原因,但我还需要一个解决方案来保持系统运行,直到找到根本原因。该服务每天死零到三次,所以不会太频繁。
该服务当前设置Restart=on-abort
为在服务文件中定义的/etc/systemd/system/someone-elses.service
那么是什么Restart=on-abort
意思呢?
我进行了搜索并了解了 restart= 的不同值的含义,但在手册页中没有找到任何内容:
我正在使用 Yocto 为 SystemD 版本 241 的小型嵌入式 Linux 系统生成自定义映像。根文件系统是只读的。我使用绑定安装和overlayfs 使/var/log/journal 目录存在于单独的读/写分区上。我有一个问题,systemd-journald 得到“Amnesia”并且不记得以前的引导日志,即使它们在持久的读/写文件系统上。这意味着即使日志文件在文件系统上存在且有效,日志也无法访问或清除以前启动时的旧日志文件。
# 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) 我正在使用以下命令尝试重新启动服务
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"
它,我可以看到我的服务的状态。
自上次重新启动服务以来,是否有一种规范的方法可以从 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)
这可能会奏效,但我想知道是否有更具体的方法可以说:重新启动并从那时起给我所有日志。
我有两个无线接口,我想在每个接口上运行不同的 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.service
as使用的
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@
。
Systemd 喜欢使用控制代码在状态行前面插入一个点:
\n$ systemctl status sshd\n\xe2\x97\x8f sshd.service - OpenSSH server daemon\n
Run Code Online (Sandbox Code Playgroud)\nvis(注意 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 只是改变点的颜色,并且:
\nsystemctl | strings\n
Run Code Online (Sandbox Code Playgroud)\n感觉就像黑客。
\nDebian 中 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) 我正在尝试创建一个在启动时运行的服务。该服务是我用 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 状态通常意味着该文件不存在或没有适当的权限,因此下面的输出证明这不是这些问题(希望如此) …
我尝试通过蓝牙将语音连接到笔记本电脑,当我连接到笔记本电脑时,笔记本电脑显示消息“ACTION II 设置失败”。我做了一些搜索,安装了非免费存储库,但它仍然无法工作。最终我找到了这篇文章并决定看看我的电脑会做出什么反应。我执行systemctl status bluetooth.service
的结果是:
\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)