标签: init-script

从 Ubuntu 启动过程中删除抽象

近 5 年后我一直在使用 Linux,并观察到引导过程几乎被抽象化了。我的意思是,用户看不到幕后发生的事情(由于启动画面等)。现在,这可能对最终用户有好处,但对极客来说却不是 :)

我想带回旧时代的冗长。这是我所做的:

通过从命令行中删除“splash”和“quiet”参数,我已经能够摆脱其中的一些。但是,我仍然看不到正在启动的服务(如init.d 中的服务)。

我认为这是因为 init 守护进程被新贵取代了。是否有一些配置文件我可以调整以恢复正在发生的事情的详细程度。

此外,一旦登录屏幕出现,它就会清除引导日志历史记录。有没有办法禁用它?

注意:我知道我可以通过简单地将发行版切换到 Arch 或 Slackware 来做到这一点。但我不想那样做。

linux boot ubuntu init-script

11
推荐指数
2
解决办法
694
查看次数

如何在 CentOS 中创建非特权用户?

我想创建一个非特权用户来在 CentOS 实例上运行我的 RhodeCode 服务器和 Celery 守护程序。我认为这个公认的定义是没有主目录、禁用登录和没有 shell 访问?查看 adduser 的手册页,我只是没有看到执行此操作的直观方法。任何建议表示赞赏。谢谢。

users centos init-script privileges

11
推荐指数
2
解决办法
4万
查看次数

/var/run 中 *.pid 文件的含义/目的是什么

我对 Linux 世界很陌生,现在我正在尝试了解FHS原则。

/var/run我发现大约十个*.pid文件crond.pid中只包含 PID。

系统中有十多个进程在运行,只有十个文件。

那么它们的目的是什么,又是什么产生了它们呢?

fhs init-script sysvinit

11
推荐指数
1
解决办法
4246
查看次数

为什么 pidof 和 pgrep 的行为不同?

我有一个 init 脚本/etc/init.d/myservice用于初始化这样的服务:

...
start() {
  ...
  daemon /usr/sbin/myservice
  ...
}

stop() {
  ...
  pgrep myservice
  pidof myservice
  ps -ef | grep myservice
  ...
}
Run Code Online (Sandbox Code Playgroud)

当我尝试停止服务时,这是输出:

10000 10001
10000
root      10000     1  0 09:52 ?        00:00:02 /usr/sbin/myservice
root      9791   9788  0 10:06 pts/1    00:00:00 /bin/sh /sbin/service myservice stop
root      10001  9791  1 10:06 pts/1    00:00:00 /bin/sh /etc/init.d/myservice stop 
root      9805   9796  0 10:06 pts/1    00:00:00 grep myservice
Run Code Online (Sandbox Code Playgroud)

这是预期的吗?为什么pidof只返回我想要停止的服务的正确 PID 并pgrep返回服务 PID 和 init 脚本的 …

grep process init-script pidof

9
推荐指数
1
解决办法
1万
查看次数

将 socat init 脚本迁移到 systemd

我在 debian 7.2 和 sysVinit 上使用 socat 和以下 init 脚本。它完美地工作:

#!/bin/bash
DESC=socat
DAEMON=/usr/bin/socat
LIB=/usr/lib/socat
SOCAT_ARGS="-d -d -lf /var/log/socat.log"

[ ! -f /etc/default/socat.conf ] || . /etc/default/socat.conf

. /lib/lsb/init-functions

PATH=/bin:/usr/bin:/sbin:/usr/sbin

[ -x $DAEMON ] || exit 0

#
#       Try to increase the # of filedescriptors we can open.
#
maxfds () {
        [ -n "$SOCAT_MAXFD" ] || return
        [ -f /proc/sys/fs/file-max ] || return 0
        [ $SOCAT_MAXFD -le 4096 ] || SQUID_MAXFD=4096
        global_file_max=`cat /proc/sys/fs/file-max`
        minimal_file_max=$(($SOCAT_MAXFD + 4096))
        if [ "$global_file_max" …
Run Code Online (Sandbox Code Playgroud)

debian init-script systemd sysvinit

9
推荐指数
1
解决办法
8773
查看次数

如何在启动时运行程序?

所以我有这个程序,我以 root 身份手动运行:

sudo gammu-smsd -c /etc/gammu-smsdrc -d 
Run Code Online (Sandbox Code Playgroud)

它的作用是运行 Gammu(管理 gsm 调制解调器的软件)并对其进行“守护”。我的问题是我希望这个程序在启动时自动运行。

可以只编辑 root 的 crontab 并将此命令粘贴在那里吗?或者有什么别的办法?

(我使用的是 Ubuntu 11.04。)

linux boot init-script

8
推荐指数
1
解决办法
2万
查看次数

/etc/init.d/networking restart 和 invoke-rc.d 网络重启的区别

/etc/init.d/networking restartinvoke-rc.d networking restart(Debian)之间有什么真正的区别 吗?

debian init-script services init.d

8
推荐指数
1
解决办法
9225
查看次数

BASH_ENV 和 cron 作业

我有几个与非交互式、非登录 shell 和 cron 作业相关的问题。

一季度。我已经读过非交互式、非登录 shell 仅 "load" $BASH_ENV。这究竟是什么意思?这是否意味着我可以指向$BASH_ENV一个文件,并且该文件将被引用?

Q2:假设我有一个cron指向带有 Bash shebang 的 Bash 脚本的条目,我可以假设我的 Bash 脚本加载了哪些环境变量和定义?

Q3:如果我添加SHELL=/bin/bash到我的顶部crontab,这到底有什么作用?是否意味着:

  1. cron 本身在 Bash 中运行?
  2. 该指令规定crontab在猛砸何解释?
  3. 那些脚本具有shebangs在其中,正在运行$SHELL

还有什么?

Q4:如何设置BASH_ENV定时任务?

bash cron init-script

8
推荐指数
1
解决办法
3592
查看次数

我可以让 Qemu 在内核恐慌失败时退出吗?

我正在尝试将 Qemu 添加到我的持续集成管道中以测试各种initrd工件。我已经发现我可以像这样运行 Qemu:

qemu-system-x86_64 \
    -machine q35 \
    -drive if=pflash,format=raw,file=OVMF_CODE.fd,readonly \
    -drive if=pflash,format=raw,file=OVMF_VARS.fd \
    -kernel vmlinuz-4.4.0-121-generic \
    -initrd my-initramfs.cpio.xz \
    -nographic
Run Code Online (Sandbox Code Playgroud)

...如果我在脚本中执行此操作,则会导致qemu-system-x86_64退出状态:0init

# poweroff -f
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为 init 脚本不会退出——它会poweroff -f“永远”调用和休眠,或者直到 Qemu 执行“断电”:

ACPI: Preparing to enter system sleep state S5
reboot: Power down
Run Code Online (Sandbox Code Playgroud)

我希望能够init通过强制执行exit错误来检测脚本中的问题set -eu。退出init脚本(正确)会导致内核崩溃,但qemu-system-x86_64进程永远挂起。

我怎样才能让它永远挂起来?如何让 Qemu 主机检测 Qemu 来宾中的内核崩溃?

进一步澄清:

我的应用程序的性质是安全敏感的;即,“允许”配置/编译 linux 内核,但不允许传递内核参数。把它放在一个很好的点上,CMDLINE_OVERRIDE启用。

linux kernel-panic init-script qemu linux-kernel

7
推荐指数
2
解决办法
3516
查看次数

启动时的系统日志消息:未初始化的 urandom 读取

CPU是AMD GX-412TC SOC

\n
\n

GX-412TC GE412TIYJ44JB 4 6W 2MB 1.0GHz/\n1.4GHz 不适用 DDR-1333 0-90\xc2\xb0C

\n
\n

其中没有rdrand

\n
grep rdrand /proc/cpuinfo\n# nothing\n
Run Code Online (Sandbox Code Playgroud)\n

我在syslog机器启动后看到以下消息:

\n
kernel: random: dd: uninitialized urandom read (512 bytes read)\nkernel: random: cryptsetup: uninitialized urandom read (32 bytes read)\n
Run Code Online (Sandbox Code Playgroud)\n

这些消息到底意味着什么?我能做什么?

\n

这是否意味着ddcryptsetup尝试读取/dev/urandom,但没有足够的熵?

\n

我正在使用haveged守护程序,但它是在引导过程后期启动的,在出现此消息之后。

\n

这是我的引导脚本启动顺序:

\n
/etc/rcS.d/S01hostname.sh\n/etc/rcS.d/S01mountkernfs.sh\n/etc/rcS.d/S02mountdevsubfs.sh\n/etc/rcS.d/S03checkroot.sh\n/etc/rcS.d/S04checkfs.sh\n/etc/rcS.d/S05mountall.sh\n/etc/rcS.d/S06bootmisc.sh\n/etc/rcS.d/S06procps\n/etc/rcS.d/S06urandom\n/etc/rcS.d/S07crypto-swap\n/etc/rc2.d/S01haveged\n/etc/rc2.d/S01networking\n/etc/rc2.d/S04rsyslog\n/etc/rc2.d/S05cron\n/etc/rc2.d/S05ssh\n
Run Code Online (Sandbox Code Playgroud)\n

系统日志中的消息来自这两个脚本:

\n
/etc/rcS.d/S06urandom  -> dd\n/etc/rcS.d/S07crypto-swap -> cryptsetup\n
Run Code Online (Sandbox Code Playgroud)\n

应该haveged先开始urandom? …

boot init-script syslog random

7
推荐指数
1
解决办法
4643
查看次数