我正在尝试在 ubuntu 16.04 上安装 tomcat 8。这是我遵循的指南:
https://www.digitalocean.com/community/tutorials/how-to-install-apache-tomcat-8-on-ubuntu-16-04
基本思想是您应该创建一个名为“tomcat”的附加用户,该用户具有运行 tomcat 的有限权限。当我尝试运行最终命令以作为服务启动时(以 root 身份尝试):
sudo systemctl start tomcat
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
tomcat.service 的作业失败,因为控制进程退出并显示错误代码。有关详细信息,请参阅“systemctl status tomcat.service”和“journalctl -xe”。
检查 systemctl 状态:
tomcat.service - Apache Tomcat Web Application Container
Loaded: loaded (/etc/systemd/system/tomcat.service; disabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: exit-code)
Process: 14 ExecStart=/opt/tomcat/bin/startup.sh (code=exited, status=203/EXEC)
systemd[1]: Starting Apache Tomcat Web Application Container...
systemd[1]: tomcat.service: Control process exited, code=exited status=203
systemd[1]: Failed to start Apache Tomcat Web Application Container.
systemd[1]: tomcat.service: Unit entered failed state.
systemd[1]: tomcat.service: …Run Code Online (Sandbox Code Playgroud) 我想在服务器上为 x11vnc 设置系统套接字激活,但我没有获得正确的配置来满足我的要求。
我想要:
x11vnc应该停止。x11vnc未运行,则会重新启动。Systemd 为 225,x11vnc 为 0.9.13。
似乎我不能使用简单的x11vnc.socket+ x11vnc.servicefiles 组合,因为x11vnc如果它检测到标准端口 (5900) 已被使用(由 systemd 套接字),它将映射到下一个 TCP 端口(5901)。
所以我使用 systemd“代理”(参见https://www.freedesktop.org/software/systemd/man/systemd-socket-proxyd.html)以便 systemd 在 5901 上监听 5900 和 x11vnc。所以我有:
代理到 x11vnc.socket:
[Socket]
ListenStream=5900
[Install]
WantedBy=sockets.target
Run Code Online (Sandbox Code Playgroud)
代理到 x11vnc.service:
[Unit]
Description=x11vnc
Requires=x11vnc.service
After=x11vnc.service
[Service]
User=myuser
ExecStart=/lib/systemd/systemd-socket-proxyd 127.0.0.1:5901
Run Code Online (Sandbox Code Playgroud)
x11vnc.service:
[Unit]
Description=x11vnc
[Service]
User=myuser
StandardError=syslog
ExecStart=/usr/bin/x11vnc -auth /home/myuser/.Xauthority -shared …Run Code Online (Sandbox Code Playgroud) 我有一个失败的 systemd 单元,我不确定结果类型应该是什么意思。
Active: failed (Result: resources) since Thu 2016-11-17 21:06:42 UTC; 32min ago
Run Code Online (Sandbox Code Playgroud)
什么Result: resources意思?我很熟悉Result: exit-code,但不是这个。
当我在系统中调试 systemd 错误时,我注意到它journalctl -u没有达到我的预期。例如,我想查看有关systemd-modules-load单位的日志。我这样做有两种方法,它们产生了不同的结果。
-u systemd-modules-load$ journalctl -u systemd-modules-load | tail
Mar 13 15:47:53 dhcp-rhodes-1379.eduroam.cornell.edu systemd[1]: Stopped Load Kernel Modules.
-- Reboot --
Mar 13 15:55:37 localhost.localdomain systemd[1]: Starting Load Kernel Modules...
Mar 13 15:55:37 localhost.localdomain systemd[1]: Started Load Kernel Modules.
Mar 13 15:55:48 localhost.localdomain systemd[1]: Stopped Load Kernel Modules.
-- Reboot --
Mar 13 15:56:09 localhost.localdomain systemd[1]: Started Load Kernel Modules.
Mar 13 15:57:07 localhost.localdomain systemd[1]: Stopped Load Kernel Modules.
-- Reboot -- …Run Code Online (Sandbox Code Playgroud) 我有一个在 Raspbian Stretch 上运行的程序,它使用在 libusb 之上实现的专用协议通过 USB 与手机通话。
我希望程序在启动时运行,所以我创建了一个 systemd 服务文件,但不确定它应该在哪个目标之后运行:
[Unit]
Description=My Program
After=network.target <-- ???
[Service]
ExecStart=/home/pi/myprogram
User=root
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
这个内容可以完成这项工作,但它应该是什么?我怎么能说“在 USB 准备好之后”?
我在网上能找到的大多数信息都是关于设置 udev 规则的,我理解这是在看到某个设备时加载内核模块,我认为这不是我想要的。
任何帮助表示赞赏。
我正在使用过度发送内核消息的设备(每秒 10-100 条消息,Mediatek 驱动程序......),从内核本身删除日志记录(分布在数百个文件中)是不可行的。
我已经接受 dmesg 在这个设备上几乎没用,但不幸的是 systemd 日志也受到了影响。
是否可以过滤/禁用将内核消息记录到 systemd 日志中?
在那里,我通常会一起开始某些服务:比如 zookeeper+kafka+elassandra。有没有办法写复合单元:一起开始,一起死?意思是如果我开始这个,它会委托开始所有的,反之亦然。这样做的正确方法是什么?
我在一台服务器上使用 ssh 登录时遇到问题,连接时间太长。我之前在不同的服务器上遇到过同样的情况,并且重新启动 systemd-logind.service 有效。
\n\n我尝试在这台服务器上执行相同的操作,但在无法重新启动后却显示此消息。
\n\n# service systemd-logind status\nRedirecting to /bin/systemctl status systemd-logind.service\n\xe2\x97\x8f systemd-logind.service - Login Service\nLoaded: loaded (/usr/lib/systemd/system/systemd-logind.service; static; \n vendor preset: disabled)\n Active: failed (Result: timeout) since Thu 2018-10-25 16:48:50 CST; 1min 16s ago\n Docs: man:systemd-logind.service(8)\n man:logind.conf(5)\n http://www.freedesktop.org/wiki/Software/systemd/logind\n http://www.freedesktop.org/wiki/Software/systemd/multiseat\n Process: 90429 ExecStart=/usr/lib/systemd/systemd-logind (code=exited, status=1/FAILURE)\n Main PID: 90429 (code=exited, status=1/FAILURE)\n Status: "Shutting down..."\n CGroup: /system.slice/systemd-logind.service\n \xe2\x94\x94\xe2\x94\x801037 /usr/lib/systemd/systemd-logind\n\nOct 25 16:42:49 HOST systemd[1]: Starting Login Service...\nOct 25 16:42:49 HOST systemd-logind[90429]: Failed to register name: File exists\nOct 25 16:42:49 …Run Code Online (Sandbox Code Playgroud) 我正在尝试设置一个 systemd 计时器,使其在一个工作周内每天运行两次。一次是在早上 7:00,一次是在下午 1:00。*.timer 和 *.service 文件如下。
我安装并启用它们,一切正常:
cp callboot-update.service /etc/systemd/system
cp callboot-update.timer /etc/systemd/system
if ! systemctl enable callboot-update.service; then
echo "Failed to enable callboot-update.service"
exit 1
fi
if ! systemctl enable callboot-update.timer; then
echo "Failed to enable callboot-update.timer"
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
并重新加载守护进程。再次一切正常:
if ! systemctl daemon-reload; then
echo "Failed to daemon-reload"
fi
if ! systemctl reset-failed; then
echo "Failed to reset-failed"
fi
Run Code Online (Sandbox Code Playgroud)
但是,检查状态显示计时器处于 n/a 状态,并且未计划运行:
$ systemctl list-timers --all
NEXT LEFT LAST PASSED UNIT ACTIVATES
Wed 2019-12-25 03:02:08 …Run Code Online (Sandbox Code Playgroud) 我已经编写了一个 C 应用程序,我想在启动时运行它。软件操作包括 GPIO 操作和我正在使用的 Beaglebone Black 上附加的投影斗篷。
我最终创建了一个供 Systemd 管理的服务。看起来像这样
[Unit]
Description=CGBHIS Service
[Service]
Type=simple
User=root
ExecStart=/home/debian/4190/primary/pattern_disp
Restart=on-failure
RestartSec=15
KillMode=process
KillSignal=SIGINT
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
我知道 systemd 已经以 root 身份运行服务,但正在发生的事情似乎正在关闭 root 访问。当我打印 Journalctl 时,我应该看到三个打印语句。然而,我看到的是这样的。
Nov 14 17:51:48 beaglebone systemd[1]: Started CGBHIS Service.
Nov 14 17:51:48 beaglebone sudo[9218]: root : TTY=unknown ; PWD=/home/debian/4190/primary ; USER=root ; COMMAND=/usr/sbin/service lightdm stop
Nov 14 17:51:48 beaglebone sudo[9218]: pam_unix(sudo:session): session opened for user root by (uid=0)
Nov 14 17:51:50 beaglebone sudo[9218]: pam_unix(sudo:session): session closed for user …Run Code Online (Sandbox Code Playgroud)