我刚切换到 debian jessie,大多数东西都运行正常,包括我的图形显示管理器wdm。
问题是,我只是不明白这是如何工作的。显然我的/etc/init.d/wdm脚本被调用了,因为当我exit在那里提前放置时,wdm 没有启动。但是当我或者重命名 /etc/rc3.d目录时(我的默认运行级别曾经是 3),然后 wdm 仍然启动。
我不知道 systemd 如何找到这个脚本,我不明白它对所有其他 init.d 脚本做了什么。
是否有一种简单的方法可以找出正在使用的 initsystem,例如最近的系统Debian wheezy或Fedora系统正在使用哪个 initsystem ?我知道Fedora 21使用systemdinitsystem 但那是因为我读过它并且因为所有相关的脚本/符号链接都存储在/etc/systemd/. 但是,我不确定例如Debian squeeze或CentOS 6 or 7等等。
有哪些技术可以验证这种初始化系统?
在 Windows 中,我有服务管理器,在那里我可以看到所有系统服务,这些服务可以通过 Windows 本身启动,我设置了它使用的用户,权限管理在那里,我可以将变量和其他一些信息传递给服务,我可以命名它们,我可以创建一个程序的重复服务等等。所以我在 Windows 中有一个主要的管理工具。
我如何在 Linux 中做同样的事情?如何在启动时触发运行“svnserve”,或者如何将服务配置为在特殊上下文中运行。如何查看所有“程序化”服务?
我正在使用一个自定义服务,该服务本质上运行一个名为 thisismywebserver 的 Web 服务器。目前它不起作用(即我在尝试访问页面时遇到“无法连接”错误)。
当我运行此命令service thisismywebserver status查看服务状态时,我看到状态为“活动(退出)”。这是否意味着该服务已停止工作?如果不是,那么这意味着什么?
root@thisismywebserver-testing:~# service thisismywebserver status
? thisismywebserver.service - LSB: ThisIsMyWebServer server
Loaded: loaded (/etc/init.d/thisismywebserver)
Active: active (exited) since Sun 2015-11-08 23:01:33 EST; 18h ago
Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.
Run Code Online (Sandbox Code Playgroud) 在我现在工作的公司中,有一个遗留服务,它的 init 脚本使用旧的 SysvInit,但运行在 systemd (CentOS 7) 上。
由于计算量很大,此服务大约需要 70 秒才能完成。我没有为 systemd 配置任何超时,也没有更改默认配置/etc/systemd/system.conf,但是当我执行service SERVICE stop我的服务时,我的服务在 60 秒后超时。
检查journalctl -b -u SERVICE.service我发现这个日志:
Sep 02 11:27:46 service.hostname systemd[1]: Stopping LSB: Start/Stop
Sep 02 11:28:46 service.hostname SERVICE[24151]: Stopping service: Error code: 255
Sep 02 11:28:46 service.hostname SERVICE[24151]: [FAILED]
Run Code Online (Sandbox Code Playgroud)
我已经尝试将DefaultTimeoutStopSec属性更改/etc/systemd/system.conf为90s,但超时仍然发生。
有谁知道为什么它会在 60 秒超时?是否还有其他地方配置了此超时值?有什么方法可以检查吗?
该服务与 java 7 一起运行并对其进行守护,它使用JSVC。我-wait用值配置了参数120。
我目前正在尝试了解在系统启动/引导时运行脚本的init.dcron 和 cron之间的区别@reboot。
使用的@reboot(这种方法中提到的这个论坛由hs.chandra)是一些什么比较简单,通过简单地进入crontab -e并创建一个@reboot /some_directory/to_your/script/your_script.txt,然后your_script.txt,应在每次系统启动时执行。的深入解释@reboot是here
或者通过嵌入/etc/init.d/your_script.txt到脚本的第二行,即:
#!/bin/bash
# /etc/init.d/your_script.txtRun Code Online (Sandbox Code Playgroud)
您可以运行,chmod +x /etc/init.d/your_script.txt并且your_script.txt每次系统启动时也应该运行。
Q1:两者的主要区别是什么?
Q2:哪个更健壮?
Q3:两者中是否有更好的一个?
Q4:这是嵌入脚本以在启动期间运行的正确方法吗?
我将合并一个 bash .sh 文件以在启动期间运行。
我正在定义要在不同发行版中使用的通用 bash 文件。我需要一种方法来检查系统是使用 systemd 还是 sysvinit (/etc/init.d/)。我需要这个,所以我运行适当的命令来启动服务。检查这个的安全方法是什么?我目前检查 systemctl 命令是否存在,但这真的是一个选项,因为可能存在 systemctl 命令可用的情况,但这并不一定意味着实际使用了 systemd?
这是我当前 bash 脚本的摘录:
#!/bin/sh
if [ command -v systemctl >/dev/null ]
then
systemctl service start
else
/etc/init.d/service start
fi
Run Code Online (Sandbox Code Playgroud) 我正在使用 CentOS 7,我的目标是每五秒创建一个 cron,但正如我研究的那样,我们只能使用 cron 一分钟,所以我现在正在做的是我创建了一个 shell 文件。
命中.sh
while sleep 5; do curl http://localhost/test.php; done
Run Code Online (Sandbox Code Playgroud)
但我通过右键单击它手动点击了它。
我想要的是为该文件创建一个服务,以便我可以自动启动和停止它。
#!/bin/bash
# chkconfig: 2345 20 80
# description: Description comes here....
# Source function library.
. /etc/init.d/functions
start() {
# code to start app comes here
# example: daemon program_name &
}
stop() {
# code to stop app comes here
# example: killproc program_name
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start …Run Code Online (Sandbox Code Playgroud) 我正在从一本名为“ Linux 命令行和 Shell 脚本圣经,第二版”的书中学习命令行。这本书是这么说的:
一些 Linux 实现包含一个在启动时自动启动的进程表。在 Linux 系统上,该表通常位于特殊文件 /etc/inittabs 中。
其他系统(例如流行的 Ubuntu Linux 发行版)使用 /etc/init.d 文件夹,其中包含用于在启动时启动和停止单个应用程序的脚本。脚本通过 /etc/rcX.d 文件夹下的条目启动,其中 X 是运行级别。
可能因为我是 linux 新手,我不明白引用的第二段是什么意思。有人可以用更简单的语言解释相同的内容吗?