问题标签 [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.
ubuntu - Chef + 自定义 systemd 脚本
我在 Ubuntu 12.04 上有一个用于 JBoss 的非常基本的 systemd 脚本。我可以通过“sudo service jboss start”或“sudo /etc/init.d/jboss start”成功运行它。我不能让这个和厨师一起工作。我原以为它会很简单:
但是不行。我试过了:
以及不同的排列。
感谢您的帮助,请参阅下面的我的 systemd 脚本。
更新:
感谢那些回答的人。我设法取得了一些进展。我从 OpsCode 下载了 JBoss Chef 食谱:http: //community.opscode.com/cookbooks/jboss
结果发现我的脚本中没有设置 JAVA_HOME 环境变量。我现在正在使用 OpsCode 的启动脚本。JBoss 现在从配方开始:
但是厨师挂在这条线上。我认为它正在等待 JBoss “完成”,但由于它应该是一项服务,它应该是持久的。如果我通过 SSH 进入实例并杀死 JBoss,则 Chef 配方成功完成。我怎样才能让厨师食谱正常结束?有关我更新的 systemd 脚本,请参见下文。
proxy - 建立 Internet 连接后 systemd 启动守护进程
我有一个只能在线启动自身的网络代理,否则它会退出并出现错误。为了守护该代理,我编写了以下systemd
服务文件:
当服务器连接到 Internet 时,该服务文件可以成功启动代理,但在系统启动时不起作用,可能是由于缺少与 Internet 访问的连接。所以我需要 systemd 来确保在启动这个守护进程之前已经建立了连接。
php - 以编程方式从 systemd 的日志中读取消息
2013 年 9 月 12 日更新:
我已经深入研究了systemd
它journal
,并且,我偶然发现了这个,它指出:
systemd-journald
会将所有接收到的日志消息转发到AF_UNIX SOCK_DGRAM
套接字/run/systemd/journal/syslog
(如果存在),Unix 系统日志守护进程可以使用它来进一步处理数据。
根据手册页,我确实将我的环境设置为在下面也有系统日志,我已经相应地调整了我的代码:
这显然只能看到(选择)write
套接字上的更改。好吧,可能是这里出了点问题,所以我试图从他们那里读到,没有运气(也不应该有):
[Thu, 12 Sep 2013 14:45:15 +0300] Changes: 1.
[Thu, 12 Sep 2013 14:45:15 +0300] -------
[Thu, 12 Sep 2013 14:45:15 +0300] Read: 0.
[Thu, 12 Sep 2013 14:45:15 +0300] Write: 1.
[Thu, 12 Sep 2013 14:45:15 +0300] Except: 0.
[Thu, 12 Sep 2013 14:45:15 +0300] 11: Resource temporarily unavailable
现在,这让我有点抓狂。syslog
文件说这应该是可能的。代码有什么问题?
原来的:
我有一个工作原型,简单地说:
但是这样感觉不对,而且消耗太多系统资源,后来才发现journald有socket。
我试图连接并阅读:
给定的套接字。
随着/var/run/systemd/journal/socket
,socket_select
看到 0 变化。我/var/run/systemd/journal/stdout
总是(每个循环)得到 1 次更改,0 字节数据。
这是我的“读者”:
读取套接字中没有数据,我认为我做错了什么。
问题,想法:
我的目标是阅读消息并在其中一些消息上执行回调。
谁能指出我如何以编程方式阅读日志消息的正确方向?
autologin - BeagleBone White + Angstrom 3.2 上的自动登录
我想找到一种方法让我的 BeagleBone(白色)Rev A6a 在通电后自动登录。我在内核 3.2.34 中使用 Angstrom,它使用 systemd 而不是 innitab。我已经看到一些关于修改某些服务文件(如/etc/systemd/system/getty.target.wants/getty@tty1.service
正如预期的那样。但是,如果我只是用一个wallwart(没有任何其他连接)为BBone供电,它似乎没有登录。至少我相信这是正在发生的事情,因为我有一个准备在登录后自动运行的程序,它只启动在第一种情况下(打开 USB)。我会很感激任何帮助。谢谢。
c - 如何重启由 Lighttpd CGI 命令触发的服务或重启?
我创建了一个在 Olinuxino Maxi 板上运行的应用程序,该板目前正在运行 Arch Linux ARM 发行版。我有点简单的应用程序可以被认为是分为两部分:
一个在 RS232 和 TCP/IP 之间执行通信,并通过 Linphone 库发起/接受 VOIP 呼叫的程序。该程序的行为方式是通过
.conf
文件配置的。该程序在启动时启动。.service
我通过为它创建一个文件然后使用systemctl
/启用它来实现启动引导systemd
。通过 Lighttpd 访问的简单网页。CGI页面是用C语言编写的。该页面为用户提供了
.conf
通过简单的表单编辑文件的方式,从而配置主程序的操作。
以上所有现在都有效。.conf
我遇到的具体问题与当用户通过网页提交新设置时如何使我的服务程序重新启动(以便它从文件中重新配置自身)有关。我被困在这个领域是因为,虽然我是一个相当有经验的 C 程序员,但在 Linux 上进行开发和一般的 Linux 管理对我来说是相当新的领域。
如果相关,我将讨论一下我是如何设置的,包括我如何设置用户等等:
- 我已经设置了应用程序名称的新用户。称它为用户应用程序名称。
- RS232/TCP/IP/VOIP 程序位于文件夹中
/home/application-name/
。该.conf
文件也位于此处。 systemd
在启动时启动程序。我了解该程序是以 root 身份运行的。- Web/CGI 代码位于
/home/application-name/web/
. 我在 Lighttpd 配置中设置了一个别名,它/cgi-bin/
指向这里,并且有效。 - 我理解的 Lighttpd 服务器以用户“http”身份运行,它愉快地访问网页,并在提交 POST 数据时
../.conf
相应地编辑文件。为了允许 Web 服务器编辑该.conf
文件,我确实必须chmod
对该文件允许对其他人进行写访问,但我猜测这样做的更好方法是将用户application-name
放入http
一个新用户组(尽管我会很感激对此也有建议)。 - 在处理完 POST 数据后,我的 C CGI 程序还用于
system()
调用 bash 脚本,restart_application.sh
. - 在里面
restart_application.sh
,我正在调用以systemctl
重新启动我的主程序。但它不起作用,我认为它不起作用,因为除了可以调用之外没有用户root
可以调用systemctl
.
所以主要问题是:
- 我应该如何让我的程序重新启动?
并且:
- 如果我在我的设置和 Linux 系统管理方面做任何绝对恐怖的事情,请务必愤怒地大喊。
编辑 1:除非有人有更好的方法,否则我正在考虑尝试这里建议的想法,即在 bash 文件中基本上是“sudo”。
raspberry-pi - Raspberry Pi fhem Web 界面无法访问
今天我在我的树莓派上安装了 Arch Linux 并开始设置 fhem。使用 yaourt 安装 fhem 后,我自定义了 fhem 配置,编写了 systemd *.service 文件并使用以下命令启动服务:
然后我使用systemctl status fhem检查了服务器状态,它给了我以下信息:
所以服务器似乎在运行,所以我切换到我的台式电脑并尝试通过将 firefox 指向192.168.1.77:8083来访问 fhem Web 界面:
所以我尝试通过 ssh 连接到 Raspberry Pi,效果很好。有人知道为什么我无法连接到 fhem 的 Web 界面吗?请在下面找到我的配置文件。
/etc/fhem/fhem.cfg
/etc/systemd/system/fhem.service
/etc/iptables/iptables.rules
systemd - systemd startup script fails to run
This systemd startup script refuses to run, but I just can't figure out why.
Obviously the problem is with the ExecStart
but I just can't see any errors with it!
c - 需要 systemd 错误记录文档
由于 syslog 错误日志记录在某些 Linux 发行版(如 arch Linux)中已过期,我正在寻找某种方法来记录 systemd 错误,但我找不到任何有关它的文档或资源。如果您知道使用 systemd 进行错误记录,请帮助我。
qt - Beaglebone 引导至 Qt 应用程序
我已经搜索了很多,但我无法让它工作。
我希望 Beaglebone 启动到我的 Qt 应用程序中。但是,我得到的是 GUI 启动正常,但几秒钟后 Angstrom 登录屏幕覆盖了我的 GUI,它在后台运行。
我在 /etc/systemd/system 中设置了如下 systemd 服务:
我通过以下方式激活它:
我禁用了 gdm:
我怀疑也许我应该更改 After 语句以等待其他服务完成。但是什么?
问候,詹姆斯
service - 尝试在 systemd 中启用/启动自定义目标的问题
我创建了一个目标文件以在我的 Fedora 18 中对我的所有个人服务进行分组,我测试了这些服务,然后我可以单独启动,但是如果我尝试启用目标,我会收到一条错误消息!
这里是目标代码:
我真的不明白那条消息是什么意思,有什么线索吗?