我有以下 systemd 服务来运行我的 Flask 应用程序:
[Unit]
Description=My Flask server
After=network.target
[Service]
User=ubuntu
ExecStart=/home/ubuntu/my-server/script.py
WorkingDirectory=/home/ubuntu/my-server/
Restart=on-failure
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
然而,当我跑步时
systemctl start my-server.service
Run Code Online (Sandbox Code Playgroud)
我得到以下状态
my-server.service - My Flask server
Loaded: loaded (/etc/systemd/system/my-server.service; enabled; vendor preset: enabled)
Active: active (exited) (Result: exit-code) since Wed 2017-06-21 22:24:18 UTC; 8min ago
Main PID: 8407
(code=exited, status=203/EXEC)
Run Code Online (Sandbox Code Playgroud)
如何防止 Flask 服务器退出?当我直接运行脚本时
/home/ubuntu/my-server/script.py
Run Code Online (Sandbox Code Playgroud)
效果很好。但如果我用 systemd 运行它,服务器会立即退出。
尝试启动 openvpn,但我不断收到此消息:
Broadcast message from root@Media (Thu 2017-08-03 07:28:29 EDT):
Password entry required for 'Enter Auth Password:' (PID 31285).
Please enter password with the systemd-tty-ask-password-agent tool!
Run Code Online (Sandbox Code Playgroud)
如果我保持 openvpn 进程运行,我可以输入该命令,但是无论我在用户名中输入什么,都不会执行任何操作......它只会让我回到终端行。如果我再次将 放入命令中,它会再次要求输入密码......接受我放入其中的任何内容并且不执行任何操作。
如果我此时停止 openvpn 进程并尝试该命令,它什么也不做......它不会问我任何事情。
我想列出所有已启用的服务实例。
下面列出了启用的服务,但仅显示服务,而不显示单个实例:
systemctl list-unit-files --state=enabled
Run Code Online (Sandbox Code Playgroud)
以下列出了所有正在运行的实例:
systemctl list-units --state=running
Run Code Online (Sandbox Code Playgroud)
我希望像下面这样显示启用的实例:
systemctl list-units --state=enabled
Run Code Online (Sandbox Code Playgroud)
但这是行不通的。
因此,如果我启动两个服务实例:
systemctl start foo-service@primary
systemctl start foo-service@secondary
Run Code Online (Sandbox Code Playgroud)
...但是我只启用一个:
systemctl enable foo-service@secondary
Run Code Online (Sandbox Code Playgroud)
我能够找出启用了哪些实例的唯一方法是:
ls /etc/systemd/system/multi-user.target.wants/
Run Code Online (Sandbox Code Playgroud)
但这看起来很混乱。有没有系统方法可以做到这一点?如果重要的话,版本是 232。
从 Ubuntu 16.04.2 升级到 16.04.3(内核 4.4.0-64 到 4.4.0-112)后,我的一个驱动器在启动后无法安装。
我尝试使用旧内核重新启动,但问题仍然存在 - 所以也许不是由于升级,而是重新启动(已经有一段时间了)。
症状
/dev/sdg1 启动后在 /dev/disk/by-uuid、/dev/disk/by-label 中没有条目。
控制台输出
Timed out waiting for device dev-disk-by ....
Dependency failed for File System Check on /dev/disk/by-label/data_raid1_05
Run Code Online (Sandbox Code Playgroud)
系统日志
Jan 31 16:52:15 srv009 systemd[1]: dev-disk-by\x2dlabel-data_raid1_05.device: Job dev-disk-by\x2dlabel-data_raid1_05.device/start timed out.
Jan 31 16:52:15 srv009 systemd[1]: Timed out waiting for device dev-disk-by\x2dlabel-data_raid1_05.device.
Jan 31 16:52:15 srv009 systemd[1]: Dependency failed for /mnt/data_raid1_05.
Jan 31 16:52:15 srv009 systemd[1]: mnt-data_raid1_05.mount: Job mnt-data_raid1_05.mount/start failed with result 'dependency'.
Jan 31 16:52:15 srv009 systemd[1]: …Run Code Online (Sandbox Code Playgroud) Top会给我以下信息:(PID 28055 的 94% CPU 负载)
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
28055 root 39 19 1295192 1,167g 3120 R 93,8 7,5 65:49.38 systemd-udevd
Run Code Online (Sandbox Code Playgroud)
当我这样做时,strace -p 28055我会得到以下几行无限重复:
getrandom("\246\306\216<\340\244a\256|\34\352\257\334\223\227\304", 16, GRND_NONBLOCK) = 16
getrandom("j\216\331 \361|X\241\333\270\260\202\377\224\3537", 16, GRND_NONBLOCK) = 16
getrandom("\36\301\27vkE\351\16\336\23\314\366y\t\272\307", 16, GRND_NONBLOCK) = 16
getrandom("U\234\235\2763\3257\37\314q\301\272i\301W\t", 16, GRND_NONBLOCK) = 16
getrandom("\223\27\244\26\365\251\335\263\233.\347\3\263]\205\4", 16, GRND_NONBLOCK) = 16
getrandom("\366,{+Tt\t\27\16z\257N^\235r,", 16, GRND_NONBLOCK) = 16
epoll_wait(10, [{EPOLLIN, {u32=798983008, u64=94889511453536}}], 11, 0) = 1
clock_gettime(CLOCK_BOOTTIME, {7011, 470364038}) = 0 …Run Code Online (Sandbox Code Playgroud) 在新安装的Ubuntu 18.04(64 位)服务器上,blk-availability.service总是因关闭时超时而终止。
我认为该服务的依赖性很差,但我不知道对此的良好关闭顺序是什么。
Xenial上也有几乎相同的配置......
md0尚未使用)systemd[1]: Stopped Load/Save Random Seed.
systemd[1]: Stopped Update UTMP about System Boot/Shutdown.
systemd[1]: Stopped Network Time Synchronization.
kernel: usb 1-13: USB disconnect, device number 2
systemd[1]: blk-availability.service: Stopping timed out. Terminating.
systemd[1]: blk-availability.service: Control process exited, code=killed status=15
blkdeactivate[2447]: [MD]: deactivating raid1 device md0... resync …Run Code Online (Sandbox Code Playgroud) 好的,这是从 16.04.1 LTS 到 18.04.1 LTS 的升级,服务器是无头的。升级完成并重新启动后,会发生以下情况:
\n\n尝试升级软件包只会导致以下结果:
\n\n~$ sudo apt upgrade\nReading package lists... Done\nBuilding dependency tree\nReading state information... Done\nCalculating upgrade... Done\nThe following packages will be upgraded:\n policykit-1 screen smartmontools\n3 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.\n1 not fully installed or removed.\nNeed to get 0 B/1,081 kB of archives.\nAfter this operation, 147 kB of additional disk space will be used.\nDo you want to continue? [Y/n] y\n\n(Reading database ... 159133 files and directories currently installed.)\nPreparing …Run Code Online (Sandbox Code Playgroud) 我们使用 Digital Ocean,它在额外的外部网络中提供高速内部网络。内网使用10.136.0.0/16。
不幸的是,Digital Ocean 不提供水平分割 DNS。当内部服务器解析另一个内部服务器并且它们都可以通过 10.136.0.0/16 网络进行通信时,我们希望建立自己的 DNS 服务器来响应内部地址。不过,我们不希望我们的 DNS 服务器出现单点故障,因此我们希望在配置中保留 Digital Ocean 的 DNS 服务器,但优先级较低。
有没有办法指定 DNS 服务器的优先级?例如,对于我们的域名 www.example.com,我们是否可以在尝试 Digital Ocean 的 DNS 之前先将这些查询定向到我们的内部 DNS?
我正在运行 KDE Neon,它是 Ubuntu 18.04 Bionic (LTS),其上有最新的 KDE 桌面软件包。
自从从 Xenial 升级到此版本以来,我失去了进程在 SSH 会话断开连接后继续存在的能力...特别是 nohup、tmux、screen、byobu 及其所有子进程在断开连接时都会被杀死。
这是一个简单的测试来演示这个问题
# connect over ssh
cd /tmp
nohup watch date &
ps -ef | grep watch
# disconnect and reconnect
ps -ef | grep watch # process is gone
Run Code Online (Sandbox Code Playgroud)
我尝试将 tmux 和 byobu 恢复到旧版本,然后发现 nohup 也受到影响。这让我相信它要么是 SSHd 配置,要么是 systemd。
显然,systemd 决定更改其默认行为,以便在用户前一段时间断开连接时核对所有用户进程。我尝试通过编辑 /etc/systemd/logind.conf 并设置 KillUserProcesses=no 然后重新启动(服务 systemd-logind 重新启动不起作用)来恢复该行为。没用……我已经束手无策了。
帮助!
最近更新后,我在使用 Ubuntu 19.04 的不同机器上遇到了这个问题,并且在我的 DVD 和 USB 驱动器开始安装时出现问题后,我变得非常好奇。
\n\n在处理过程中apt我看到:
GDBus.Error:org.freedesktop.systemd1.UnitMasked: Unit -.mount is masked.\nRun Code Online (Sandbox Code Playgroud)\n\n此消息会在不同时间出现。我担心这与最近可移动媒体自动安装失败有关。例如:
\n\n $ sudo apt update\n Hit:1 http://au.archive.ubuntu.com/ubuntu disco InRelease\n Get:2 http://au.archive.ubuntu.com/ubuntu disco-updates InRelease [97.5 kB] \n Get:3 http://au.archive.ubuntu.com/ubuntu disco-backports InRelease [88.8 kB] \n Hit:4 https://dl.yarnpkg.com/debian stable InRelease \n Ign:5 http://dl.google.com/linux/chrome/deb stable InRelease \n Get:6 http://security.ubuntu.com/ubuntu disco-security InRelease [97.5 kB] \n Hit:7 http://ppa.launchpad.net/danielrichter2007/grub-customizer/ubuntu disco InRelease \n Hit:8 http://dl.google.com/linux/chrome/deb stable Release \n Hit:10 https://packages.microsoft.com/repos/vscode stable InRelease \n Hit:11 http://ppa.launchpad.net/teejee2008/ppa/ubuntu disco InRelease \n …Run Code Online (Sandbox Code Playgroud)