我知道 rc*.d 目录在启动时使用,或重新启动,等等,用于启动或停止程序。任何人都可以向我解释放置在/etc/路径下的 rc*.d 文件夹和放置在/etc/rc.d/路径下的另一个文件夹之间有什么区别。
此外,有什么之间的区别/etc/init.d和/etc/rc.d/init.d?
谢谢。
注意我正在运行 CentOS 6.2。
init-script directory-structure architecture sysvinit init.d
是否有任何别名标准sudo /etc/init.d/?我相信很多人都考虑过将这 17 个字符减少到 2 个左右。
在我的 Debian 服务器上,我没有网络共享(NFS、SMB、...)。我正在尝试优化和简化我的启动过程。可以删除以下初始化脚本吗?
/etc/rcS.d/S12mountnfs.sh
/etc/rcS.d/S13mountnfs-bootclean.sh
Run Code Online (Sandbox Code Playgroud)
AFAICT,只有在安装 NFS 时才需要这些。但是,我不确定mountnfs-bootclean.sh脚本的目的是什么。
无论如何,删除这两个脚本是否安全,即:
chkconfig mountnfs-bootclean.sh off
chkconfig mountnfs.sh off
Run Code Online (Sandbox Code Playgroud) 我只是有一个简单的问题,但在搜索引擎中搜索我没有找到-有关chkconfig运行级别中的(连字符)在init 脚本文件中实际代表什么的任何解释。
例如/etc/init.d/mysqld前几行是这样的:
#!/bin/bash
#
# mysqld This shell script takes care of starting and stopping
# the MySQL subsystem (mysqld).
#
# chkconfig: - 64 36
Run Code Online (Sandbox Code Playgroud)
如果有人能给我一个解释这个的链接,那就太棒了。
要问我的问题,我必须首先澄清上下文。
/etc/init.d(在 RedHat 和 Centos 发行版上)中的每个 init 脚本都准备好使用chkconfig命令行工具实用程序进行管理。
此工具管理 中的符号链接/etc/rc[0-6].d,了解运行级别并允许从旨在为每个运行级别运行的集合中添加和删除 init 脚本。(参见 man chkconfig)。注意:它并没有开始,也没有停止的服务/守护程序,但它允许一个更简单的管理是什么“上”,什么是“关”在每一个运行级别。
根据 man 的说法,要实现这一点,每个 init 脚本/etc/init.d都必须在推荐行(chkconfig:和description:,请参阅联机帮助页)或LSB 样式的 init 节中包含恰好两个指令。但是暂时搁置一下这个 LSB-tyles 节(它们是最近引入的)并且比原始的 chkconfig“格式”更具描述性(这个主题可以很好地解决其他问题)。
出于好奇,我在我的 RedHat 机器(5.2 和 6.1)上运行了这个命令来检查初始化脚本:
find /etc/init.d/ -ls -execdir head -n20 {} \;
Run Code Online (Sandbox Code Playgroud)
我还看到了其他(可能未记录的)指令:
# processname: # pidfile: # config: # Author:这些在注释行中,看起来与官方指令(chkconfig:和description:)相同。
有谁知道这些是chkconfig指令还是只是一些很好的格式化注释?
如果这些也是指令,它们是什么意思?
有一些参考吗?我找不到任何。
我有一个设计不佳的初始化脚本,因为它不符合Linux 标准基本规范
如果正在运行,则以下代码的退出代码应为 0,如果未运行,则退出代码应为 3
service foo status; echo $?
Run Code Online (Sandbox Code Playgroud)
然而,由于脚本的设计方式,它总是返回 0。我无法在没有重大重写的情况下修复脚本(因为 service foo restart 依赖于 service foo 状态)。
您如何解决这个问题,以便service foo status在运行时返回 0,如果不运行则返回 3?
到目前为止我所拥有的:
root@foo:/vagrant# service foo start
root@foo:/vagrant# /etc/init.d/foo status | /bin/grep "up and running"|wc -l
1
root@foo:/vagrant# /etc/init.d/foo status | /bin/grep "up and running"|wc -l;echo $?
0 # <looks good so far
root@foo:/vagrant# service foo stop
root@foo:/vagrant# /etc/init.d/foo status | /bin/grep "up and running"|wc -l
0
root@foo:/vagrant# /etc/init.d/foo status | /bin/grep "up and running"|wc …Run Code Online (Sandbox Code Playgroud) 我正在尝试追踪 Java 应用程序的一些怪癖,该应用程序在通过 /etc/init.d 中的启动脚本启动时行为异常,但是当您打开 GUI 终端窗口并通过 /etc/init.d/ 运行它时运行良好我的应用程序启动。(奇怪之处涉及应用程序的一部分,它使用 X 进行了一些hacky handwaving。)由于应用程序在通过终端窗口启动时运行良好,因此在深入研究(诚然微妙而不是我的)源代码之前,我正在查看它是如何启动的代码。
这篇文章的答案给了我一个线索,即 Gnome 终端正在窗口管理器中运行,这以某种方式影响(以一种很好的方式)我通过 bash 脚本启动的应用程序的环境。我能够验证通过 tty 终端(ctrl-alt-f1 或通过 ssh)启动脚本的行为与启动时启动的行为相同。
我的主要问题是:当计算机启动时,我可以做些什么来启动这个应用程序,但它是否像在 X 下启动一样?到目前为止,我们已经使用了脚本路由,因为它还需要使用某些参数启动 Java VM。
后续问题(严格来说是为了增强我的理解):当脚本通过窗口管理器中运行的某些东西启动时,幕后发生了什么使脚本行为不同?谷歌并没有在这方面启发我。
我想知道是否可以让日志程序记录随机电源故障。显然,断电时它没有时间记录,但是有没有办法在断电后重新启动时识别发生断电呢?我知道 Red Hat(以及一般的 Linux)有一些非常好的日志 ( /var/log),但我不认为它有任何可以处理电源故障的本机日志记录程序。
如果没有日志记录程序,我也在讨论更改启动脚本。BIOS设置为始终开机;因此,如果发生电源故障,它会自动重新启动。
因此,我正在考虑mail在启动脚本中添加一些内容(简单的命令),因为第一次启动后的每次启动都标志着电源故障。不幸的是,我不知道这样的命令的文件或位置或实际语法是什么。
我的脚本未在 Ubuntu 下的 vagrant 框中启动时运行。
我的脚本看起来像这样 -
#!/bin/bash
# /etc/init.d/mailcatcher
### BEGIN INIT INFO
# Provides: scriptname
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
mailcatcher --http-ip 192.168.50.10
Run Code Online (Sandbox Code Playgroud)
我对文件的权限如下所示 -
-rwxr-xr-x 1 root root 352 Apr 30 09:59 mailcatcher.sh
Run Code Online (Sandbox Code Playgroud)
我运行命令 -
sudo update-rc.d "mailcatcher.sh" defaults
Run Code Online (Sandbox Code Playgroud)
如果我手动运行脚本,它会工作并启动 mailcatcher。如果我重新启动计算机,mailcatcher 守护程序不会启动。我错过了什么吗?
我试图在基于 runit 的 linux 系统中运行 agetty,但我有以下问题
sh: cannot set terminal process group (136) Inappropriate ioctl for device
sh: no job control in this shell
Run Code Online (Sandbox Code Playgroud)
我对这个错误一无所知,你有什么想法吗
运行 agetty 的脚本是
#!/bin/sh
exec /sbin/agetty 38400 tty1 linux --noclear
Run Code Online (Sandbox Code Playgroud)
任何帮助都会很好。