问题标签 [sysv]
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.
bash - Bash 脚本在系统启动时未按预期执行
我在 raspbian jessie - pixel 上的/etc/init.d中创建了一个 bash 脚本。脚本如下:
自动宣布
我需要做的是:
在 app.js 上永远开始:
forever start app.js
在forever启动后,运行python脚本simulation.py:
python simulation.py
问题是永远成功启动,但python 脚本没有运行。
当我在终端中运行上述脚本时./auto_announce
,脚本运行良好。但它在系统启动时不能完美运行。
我错过了什么?有没有办法记录上述脚本的输出以找出导致问题的原因?
谢谢。
bash - 如何通过 AWS cloudformation 用户数据 bash 脚本在云初始化阶段安装服务并启动它?
我需要在我的 EC2 实例上添加一个关闭挂钩来做一些资源清理工作。
此外,我还可以手动启动和停止我的实例以进行测试,并且我希望启动和关闭挂钩的触发方式与初始引导程序相同。
然后我决定通过 Cloudformation bash 脚本在 AWS EC2 Ubuntu 16.04 LTS 实例上安装一个脚本作为服务。
这是脚本的第一个简单版本:
在这个版本中,引导脚本永远不会启动。
我很快就明白,引导脚本是在 cloud-init 阶段安装的,顺便说一句,是在 linux sysv init 阶段安装的,不会参与当前的 init 阶段......(如果这是错误的,请告诉我 ;-))
然后我决定手动启动它,例如 cloudformation bash 示例中的 apache2。我在脚本末尾添加了以下行。
我再次对其进行了测试,并在此修复后在 bootstrap.log 文件中看到了“STARTUP on XXX”日志。但是当我试图在控制台中停止实例时,bootstrap.log 文件中没有出现“XXX 上的 SHUTDOWN”日志......
我登录到实例并尝试手动启动/停止脚本......所有启动和关闭日志都出现了 8-O。然后我假设由于 boostrap 脚本没有被识别为初始化脚本,因此不会在实例停止或终止时调用停止回调......(如果这是错误的,请告诉我 ;-))
然后,我从 AWS 控制台启动和停止了几次实例,并且 STARTUP 和 SHUTDOWN 消息仍然出现在日志中。这证实了我的假设。日志仅在第一个初始化和关闭周期中丢失。
所以我做了一些奇怪而丑陋的事情......我用这个替换了最后一行 start 命令:
该脚本现在可以按我的需要运行,但我认为应该有一种更简洁的方法来启用我的脚本以进行初始化,或者至少在 cloud-init 期间的关闭阶段启用脚本,而无需重新启动...
有人对此问题有最佳解决方案或更多详细信息吗?
PS:我尝试过init u
,telinit u
而不是重新启动但没有成功
sysv - 我的系统 V 初始化脚本不返回
这是脚本内容,位于 /etc/init.d/myserviced:
当我启动服务时(通过直接调用或调用sudo service myserviced start
),我可以看到程序myprogram.py
运行,但它没有返回命令提示符。
我想一定有什么我误解了,那是什么?
该系统是 Debian,在 Raspberry Pi 上运行。
c - 如何实现流程方面的互斥锁和条件变量
我有两个进程正在运行。一个是主服务器,另一个是代理服务器。它们都通过共享内存进行通信。代理服务器写入文件名,主服务器读取它。然后主服务器写入该文件的内容以供代理服务器读取。以下是代码: 主服务器:
代理服务器:
我只添加了创建和共享内存的相关代码。请注意,这两个代码都在单独的文件中。我需要实现互斥锁和条件变量,这样当主服务器只能在代理服务器写入内存后读取等等。我在互联网上搜索了代码,但它们似乎都在为一个文件工作。它们如何在两个文件之间共享?请告知一些教程或任何让我开始的东西。
c - execvp() - 不支持的 SysV 选项
我正在尝试用 C 编写一个简单的 shell,它接受一个命令并使用一个子进程来执行该命令。例如,如果我输入:
我的子进程应该执行该命令及其参数。我打印出我的命令,因为它们存储在一个数组中。这是我所看到的:
当我执行时,我得到了这个:
我的代码如下。
service - 所有 sysv 服务都返回退出代码 1(服务开始/状态/停止)
在一台amzn linux服务器上,经过一轮安装-清理-重新安装练习后,突然system Vservice
命令不再起作用(例如:service docker start
; service sendmail status
, service cron stop
)。它立即以退出代码 1 退出,没有执行任何操作,也没有记录任何内容。跑步/etc/init.d/docker start
之类的工作。
assembly - 为什么eax包含向量参数的数量?
为什么 al 包含汇编中矢量参数的数量?
为什么向量参数与被调用者的正常参数有任何不同?
firebird - FreeBSD 11.2 上的 Firebird 2.5 数据库服务器
我根据https://www.howtoforge.com/the-perfect-database-server-firebird-2.5-and-freebsd-8.1上的说明安装了 Firebird 数据库服务器(2.5 版) ,我收到此消息“请不要将 firebird 构建为“root”,因为这可能会导致与正在运行的服务的 SysV 信号量发生冲突”。
尝试以普通用户身份编译失败,因为我无权在此目录中写入。
以 root 身份安装 Firebird 后,当我尝试创建本地数据库时出现错误:
有人能帮助我吗?
docker - 使用 sysVinit 启动 Docker 守护进程
目前我使用基于 ARM64 的 Debian Images 和 docker。
我想在启动时自动化 docker 守护进程,所以我们不必手动启动它。但是图像不使用 systemd 但很好的旧 sysVinit。
所以我虽然“很简单——简单的带有命令“dockerd”的初始化脚本(或start-stop-daemon和dockerd作为参数)。但是没有——不起作用。命令“dockerd -v”在启动时工作正常(通过检查管道输出到日志文件)。但是当没有参数执行“dockerd”时 - 如此简单的启动守护进程 - 什么都没有发生 - 没有错误没有警告没有任何东西被传送到日志文件。
所以我的问题是——在启动这个 dockerd 命令之前是否需要启动任何其他进程或需要完成配置?
启动完成后,我对设备执行 SSH 并手动执行“dockerd”,一切正常。
python - 从 init.d 脚本运行时,Virtualenv 库在 python 脚本中错误链接,但在正常运行时没有
下面是内幕。
- 首先,我将 EC2 实例与 Amazon Linux(原始实例,而不是 Amazon Linux 2)一起使用,将我限制为 sysV 而不是 systemd。
- 我有一个在 CherryPy WSGI 服务器上运行的 Flask 应用服务器,前面有一个 Nginx 反向代理。
- WSGI 服务器和应用服务器都在 python3 virtualenv 中。
- 服务器在 virtualenv 中运行得很好。
- 放一个#!与服务器文件顶部的 virtualenv python bin 的位置一致,我可以通过输入服务器脚本的完整路径从系统上的任何位置运行服务器(无需先激活 virtualenv):
/path/to/server.py
- 但是,当我尝试从 init.d 脚本中运行它时,出现
ModuleNotFoundError: No module named 'cherrypy'
错误。 - 我也尝试使用 activate_this.py,得到相同的结果。
这是一些(匿名)代码,看看是否有帮助:
服务器.py:
/etc/init.d/crowded(基于https://www.cyberciti.biz/tips/linux-write-sys-v-init-script-to-start-stop-service.html)
TL;DR:从控制台编写的 Python 脚本在从 init.d 脚本调用时不起作用,特别是在从 init 脚本调用时无法链接 virtualenv 中的库,尽管从控制台调用时链接它们很好。我不知道为什么。