我有一个用于在 elasticsearch 上发出警报的插件。
这是每次手动运行
python -m elastalert.elastalert --verbose --rule example_frequency.yaml
Run Code Online (Sandbox Code Playgroud)
通过这种方式,必须为它专门设置一个屏幕,我希望它在后台运行。
此任务可以通过两种方式完成,我使用Supervisor或systemd。
我所要做的就是为其中任何一个编写脚本。
但是我应该在生产中实际使用什么?
这两者的优缺点是什么?
我运行 16.04,systemd现在tmux在用户断开连接时终止(更改摘要)。
有没有办法用230运行tmux或screen(或任何类似的程序)systemd?我阅读了所有关于行为的利弊的激烈讨论,但没有提出解决方案。
(我也看到了 229 中的行为)
这是新安装的机器,在 Win 10 上作为双启动运行。由于某些原因,由于 plymouth 服务无法启动,每次重新启动机器都会挂起 15 秒。
环境:-
Manufacturer: Dell Inc.
Product Name: Precision 5820 Tower
Ubuntu 18.04
4.15.0-29-generic
vendor : NVIDIA Corporation
model : GP104GL [Quadro P4000]
Run Code Online (Sandbox Code Playgroud)
以下是 systemd-analysis 输出片段
sudo systemd-analyze blame
14.405s plymouth-quit-wait.service
8.843s dev-sdb4.device
8.049s NetworkManager-wait-online.service
5.305s bolt.service
4.889s snapd.service
4.243s udisks2.service
4.092s grub-common.service
3.806s networking.service
3.780s ModemManager.service
3.325s dev-loop10.device
3.295s apparmor.service
3.190s dev-loop13.device
3.162s accounts-daemon.service
Run Code Online (Sandbox Code Playgroud)
这是启动日志的几个片段
Feb 18 11:37:42 polkitd[876]: started daemon version 0.105 using
authority implementation `local' version `0.105'
Feb 18 11:37:42 dbus-daemon[820]: …Run Code Online (Sandbox Code Playgroud) 我想指定一个Environment systemd包含的指令=,例如
Environment=CATALINA_OPTS=-Dappserver.home=/var/lib/archiva/apache-tomcat-current -Dappserver.base=/var/lib/archiva/apache-tomcat-current
Run Code Online (Sandbox Code Playgroud)
并得到错误
[/lib/systemd/system/archiva.service:10] Invalid environment assignment, ignoring: CATALINA_OPTS=-Dappserver.home\=/var/lib/archiva/apache
Run Code Online (Sandbox Code Playgroud)
在journalctl -xe。我试图用报价"和'和逃跑=用\都没有成功。这似乎没有记录。
我在我的笔记本电脑中安装了一个全新的 SSD,并全新安装了 Ubuntu 15.04,没有使用系统加密(仅主目录加密)。但是,它在启动时仍然要求我输入密码(我只是按 Enter 跳过):

此外,在进行全新安装后,升级包还会多次要求我输入密码,这Enter也绕过了。该程序是“systemd-tty-ask-password-agent”,所以问题似乎出在 systemd 上。
终端中的相关消息:
Please enter passphrase for disk Crucial_CT250MX200SSD4 (cryptswap1) on none!
update-initramfs: deferring update (trigger activated)
Broadcast message from root@username-XPS-13-9343 (Thu 2015-04-30 22:06:22 EDT):
Password entry required for 'Please enter passphrase for disk Crucial_CT250MX200SSD4 (cryptswap1) on none!' (PID 4027).
Please enter password with the systemd-tty-ask-password-agent tool!
Run Code Online (Sandbox Code Playgroud)
运行升级的完整输出:
+username@username-XPS-13-9343:~$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages will be …Run Code Online (Sandbox Code Playgroud) 在很长的一行中systemctl status,需要水平滚动,这使得复制输出变得非常困难。有没有办法在终端结束时获得换行符(就像nano -$这样做)?
我不是在寻找解决方法,例如将输出重定向到临时文件并使用支持输出的编辑器显示它。
我正在使用 Ubuntu 15.10。
对于 Ubuntu 16.04 LTS (GNU/Linux 3.10.96-113 armv7l)
当我有以下内容时,我的静态配置将被忽略:
/etc/网络/接口
source-directory /etc/network/interfaces.d
Run Code Online (Sandbox Code Playgroud)
/etc/network/interfaces.d/eth0
auto eth0
iface eth0 inet static
address 192.168.40.112
netmask 255.255.255.0
gateway 192.168.40.1
dns-nameservers 8.8.8.8
Run Code Online (Sandbox Code Playgroud)
但是,以下内容:
/etc/网络/接口
auto eth0
iface eth0 inet static
address 192.168.40.112
netmask 255.255.255.0
gateway 192.168.40.1
dns-nameservers 8.8.8.8
source-directory /etc/network/interfaces.d
Run Code Online (Sandbox Code Playgroud)
静态配置在启动时设置(与我在interfaces.d/ 中的设置无关)。
如果相关,我使用 udev 规则重命名 eth0 接口(它曾经是“enx001e063110c0”...)
我正在尝试将 Node.js API 作为服务运行,但遇到了问题。
运行时systemctl status servicename.service出现以下错误:
servicename.service - [Service description]
Loaded: leaded (/etc/systemd/system/servicename.service; enabled; vendor preset: enabled)
Active: failed (Result: start-limit-hit) since [timestamp] ago
Process: 1142 ExecStart=/usr/bin/node /home/pi/Documents/server.js (code=exited, status=0/SUCCESS)
Main PID: 1142 (code=exited, status=0/SUCCESS)
[timestamp] hostname systemd[1]: servicename.service: Service hold-off time over, scheduling restart.
[timestamp] hostname systemd[1]: Stopped [Service description]
[timestamp] hostname systemd[1]: servicename.service: Start request repeated too quickly.
[timestamp] hostname systemd[1]: Failed to start [Service description]
[timestamp] hostname systemd[1]: servicename.service: Unit entered failed state.
[timestamp] …Run Code Online (Sandbox Code Playgroud) 我在硬盘上的笔记本电脑上重新安装了 Ubuntu 17.04 桌面 64 位 UEFI。
笔记本电脑:英特尔酷睿 i5-5200U、英特尔高清显卡 5500、16 GB 内存。
启动需要大约 120 秒(从按下电源开关到登录屏幕,在 ssd 上使用 Ubuntu 16.04.2 需要不到 20 秒)。
$ systemd-analyze blame
5.187s dev-sdb2.device
4.268s ModemManager.service
3.138s accounts-daemon.service
2.852s fwupd.service
2.688s grub-common.service
2.421s irqbalance.service
2.367s apport.service
2.360s gpu-manager.service
2.269s NetworkManager.service
1.641s thermald.service
1.632s polkit.service
1.567s rsyslog.service
1.336s keyboard-setup.service
1.241s lightdm.service
1.240s plymouth-quit-wait.service
1.231s speech-dispatcher.service
1.172s udisks2.service
1.159s apparmor.service
1.019s alsa-restore.service
976ms repowerd.service
957ms upower.service
900ms bluetooth.service
821ms systemd-resolved.service
792ms dev-hugepages.mount
792ms dev-mqueue.mount
789ms avahi-daemon.service
755ms sys-kernel-debug.mount …Run Code Online (Sandbox Code Playgroud) 升级到 16.04 后,我是 systemd 的新手,但在启动和重新启动服务时遇到问题。当我跑步时(例如)...
systemctl start djalbat.com
Run Code Online (Sandbox Code Playgroud)
...它似乎工作,但是我没有得到提示,它似乎挂起。如果我ctrl-c让提示返回然后测试服务是否已启动,它似乎已经启动了。我想知道配置中有什么会导致这种情况发生?这里是:
[Unit]
Description=djalbat.com
[Service]
Type=forking
WorkingDirectory=/var/www/djalbat.com/
ExecStart=/usr/bin/node ./bin/main.js start 2>&1 >> /var/log/djalbat.com.log
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
此外,如果有人可以指出最后一条WantedBy指令的必要性,那将不胜感激。
systemd ×10
boot ×3
services ×2
17.04 ×1
18.04 ×1
arm ×1
dual-boot ×1
encryption ×1
gnu-screen ×1
networking ×1
nodejs ×1
output ×1
password ×1
plymouth ×1
raspberrypi ×1
startup ×1
sudo ×1
supervisor ×1
tmux ×1