问题标签 [systemd]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
daemon - 看门狗上的 systemd 重新启动服务确实终止了先前挂起的实例
我正在尝试设置 systemd 服务配置以在看门狗失败时重新启动服务。如果我的应用程序没有及时调用 sd_notify(),systemd 会生成新实例。但是,前一个实例不会被杀死。一段时间后,我运行了许多应用程序实例。
这是我的服务文件的一部分:
我如何配置 systemd 来杀死在看门狗上失败的实例?
我已经阅读了手册页,但它对我没有帮助。
我认为Restart=on-failure
默认情况下应该重新启动挂起的进程......
sudo - 即使调用用户注销,我如何保持 sudo 会话?
我有一个运行时间较长的sudo
(或su
)命令,即使最初调用该命令的用户注销,它也需要继续运行。
显然sudo sleep 60 & killall --user $USER
也杀死了 sleep-command,因为它是我的 tmux/zsh 进程的子进程:
我怎样才能将该命令“提升”到实际的根进程层次结构中 - 或以任何其他方式使其保持注销?
docker - Fleectl 作业已存在
将 docker 容器部署到 CoreOS 时遇到问题。请注意以下事项
服务(容器)不存在,但是提交表示它存在,销毁它,很好,现在我们可以提交,然后启动,但同样的错误,再次通过销毁提交,但同样的问题。
有人知道可能出了什么问题吗?
qt - BeagleBone 通过触摸屏引导至 Qt 应用程序
和其他许多人一样,我希望有一个在 BeagleBone Black 启动时直接运行的 Qt 应用程序。使用来自其他主题的答案,例如: Beaglebone Boot to Qt App; 在嵌入式 Linux 设备 (Beaglebone Black) 上启动时启动 QT 应用程序
我有一个带有 Angstrom 的 BeagleBone Black revC 2012-09-12。
通过以下服务设置,我实现了让我的应用程序在启动时启动:
但是我的应用程序通过触摸屏(4DCAPE-43T)使用触摸界面,它根本不起作用。当 systemd 运行我的应用程序时,似乎没有加载 tslib 库。我推断这是因为当我将此行添加到服务 [Unit] 时:
然后服务不会加载应用程序并显示错误消息,因为路径不存在。
此外,如果我将类型从简单替换为空闲,那么它仅在 BeagleBone 处于空闲模式时加载应用程序,因此大多数时间在每个引导过程结束时,它有时会起作用。
所以我试图找到一种方法来确保在 tslib 完成加载后执行我的应用程序,但我找不到加载 tslib 的内容(不是服务?)。那么,如何确保文件“/dev/input/touchscreen0”在运行之前已经存在?
谢谢!
PS:由于环境变量的定义,在我的服务中提到了我的配置文件,这里是:
EDIT1:服务文件修改为:
在应用程序运行时检查状态后,我得到以下输出(触摸功能不工作):
EDIT2:在结合命题进行了几次测试后,我找到了一个似乎在大多数情况下都有效的中间解决方案。但有时触摸功能仍然不起作用。由于我在使用 systemd 时遇到了其他问题(请参阅这篇文章),所以我把它放在一边。
这是我几乎可以工作的服务文件:
docker - systemd 在开始下一个之前没有等待我的服务单元完成
这是我的两个单位:
我的问题如下: percona_db.service 启动的docker容器有时会需要很长时间才能加载(如果是第一次加载,它会创建db并添加数据,可能需要一些时间)。当我将它们链接在一起时,php_fpm 服务需要 percona 服务才能启动。而且,即使我指定:
systemd 尝试在 percona_db 服务完成之前启动 phpfpm 服务并抛出错误说 percona 容器不存在:/。
我究竟做错了什么?或者我该怎么做才能让它发挥作用?(也许让phpfpm服务人为等待?systemd可以吗?)
谢谢你 !
embedded-linux - BeagleBone Black + PowerCape + LCD4 cape = 慢启动
我正在开发一个带有 BeagleBone Black (BBB) 的嵌入式产品项目。我还需要一个触摸屏来显示信息和输入。由于我还需要 5v 电源在 USB 上添加网络摄像头,因此我无法使用没有升压器的 BBB 的内置电池功能。我找到了一款可以满足我需求的斗篷:AndiceLabs 的 PowerCape。对于屏幕,我主要使用的是circuitco的 LCD4 以及 4D systems的4DCAPE-43T ,我认为它们完全相同,因此两者都会出现问题。
因此,一切工作正常,嵌入所有内容非常好。但是由于未知的原因,当我添加 PowerCape 时,启动时间(从我按下电源按钮和 LED 开始点亮到控制台在屏幕上可见的那一刻)从 20 秒变为 1 分 30 秒。拥有一个能够执行快速启动但无法获得它的系统是非常令人沮丧的。
这里有一些技术信息:
操作系统:
Angstrom 2013-09-12 linux kernell 3.8.13
这是一个全新安装,仅添加了 Qt 库。桌面环境被禁用。
启动时间:
单独使用 BeagleBone Black:~20 秒
BeagleBone Black + LCD4:~20 秒
BeagleBone Black + LCD4 + PowerCape:1mn30 秒
我生成了一些使用和不使用 PowerCape 的日志并联系了 AndiceLabs,根据他们的意见,PowerCape 不应该影响启动时间,因为与 barel jack 电源的唯一区别是 cape ROM、INA219 和 I2C 总线上的 AVR。他们认为问题应该来自 systemd,它似乎在“目标多用户”和“目标图形界面”之间暂停。我对 systemd 进行了一些研究并试图理解它(我已经在这里为另一个问题与它作斗争),但这真的很令人困惑,我真的不知道该怎么看。
日志:
不使用 PowerCape
使用 PowerCape
仅在未使用 PowerCape 的情况下出现
的日志 仅在使用 PowerCape 时出现的日志
bash - 读取 redis-cli subscribe 的标准输出并在消息上运行 bash 命令
我想要一个 bash 脚本,它读取redis-cli
订阅的标准输出并在收到消息时执行某些操作,以及消息值。
订阅可以作为参数传递给redis-cli
喜欢
但是然后我需要将该标准输出通过管道传输到某些东西,以便我可以解析消息。我考虑过使用while read line; do
循环,但单个 redis 消息占用 3 行。
更新
我的结局是通过在 etcd 上设置一个键来宣布一个新的 redis 主控。这应该可以通过订阅switch-master
redis 哨兵上的频道来实现。[1] 该消息的值应该类似于以下内容<master name> <oldip> <oldport> <newip> <newport>
,我想将其设置newip
为 etcd 上的值。
收到该消息时我想运行的命令是etcdctl set /redis/master $NEWIP
node.js - 带有 systemd 脚本的 Sails.js
我已经设法让 Sails js 应用程序在服务器上运行,目前仅使用 nohup 运行以在 SSH 会话结束时保持服务运行。
显然,这不是一个非常健壮的解决方案。如果应用程序崩溃或服务器被重置等会发生什么?我正在使用 Fedora,所以我正在使用 systemd。
这是我到目前为止所拥有的。
服务启动正常,但脚本不知道配置文件,因此默认使用 Sails 端口 1337。转到服务器上的该端口也不起作用。
我还使用sails 配置文件中设置的端口设置了nginx,它工作正常,但我认为这不会有所作为。
python - 从 Python 脚本中读取 systemd 日志
我正在尝试使用 systemd 库 http://www.freedesktop.org/software/systemd/python-systemd/journal.html在 Python 中模拟这个 shell 命令
我实际上是在尝试在 Python 中模拟这个命令。
我已经看到其他人在 Python 中通过调用日志可执行文件来执行此操作,但这是一种非常糟糕的方法。
我根据上面链接的文档编写了这个简单的脚本
这里有几个问题
- 日志似乎从大约 5 天前开始,这意味着 seek_tail 似乎没有工作。
- 我在这里收到了很多垃圾,我应该使用一个特定的过滤器来匹配我从问题开头给出的 journalctl 命令中获得的数据吗?
理想情况下,从长远来看,我只想根据一组过滤器/匹配来关注该期刊,以模拟命令“journalctl -f”,但我只需要先解决这个问题。我想结束这样的事情,但它也不起作用。
neo4j - 在 Arch Linux 上使用 Systemd 运行 Neo4j 时出错
我在我的 arch linux 设置上安装了 neo4j,并且能够手动启动服务器(sudo neo4j start
)。但是,当我尝试使用systemctl start neo4j
,我得到
错误消息中的任何建议都没有提供任何帮助。我有/usr/lib/systemd/system/neo4j.service:
我尝试在 neo4j 和 root 之间更改用户,并且在我尝试在 security/limits.conf 中设置限制之前,我最初没有注释掉 LimitNOFILE(它在正常启动时消除了文件编号错误)。AUR 中提到了此设置,但我无法使其正常工作。任何帮助表示赞赏!