近 5 年后我一直在使用 Linux,并观察到引导过程几乎被抽象化了。我的意思是,用户看不到幕后发生的事情(由于启动画面等)。现在,这可能对最终用户有好处,但对极客来说却不是 :)
我想带回旧时代的冗长。这是我所做的:
通过从命令行中删除“splash”和“quiet”参数,我已经能够摆脱其中的一些。但是,我仍然看不到正在启动的服务(如init.d 中的服务)。
我认为这是因为 init 守护进程被新贵取代了。是否有一些配置文件我可以调整以恢复正在发生的事情的详细程度。
此外,一旦登录屏幕出现,它就会清除引导日志历史记录。有没有办法禁用它?
注意:我知道我可以通过简单地将发行版切换到 Arch 或 Slackware 来做到这一点。但我不想那样做。
我想创建一个非特权用户来在 CentOS 实例上运行我的 RhodeCode 服务器和 Celery 守护程序。我认为这个公认的定义是没有主目录、禁用登录和没有 shell 访问?查看 adduser 的手册页,我只是没有看到执行此操作的直观方法。任何建议表示赞赏。谢谢。
我有一个 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 脚本的 …
我在 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) 所以我有这个程序,我以 root 身份手动运行:
sudo gammu-smsd -c /etc/gammu-smsdrc -d
Run Code Online (Sandbox Code Playgroud)
它的作用是运行 Gammu(管理 gsm 调制解调器的软件)并对其进行“守护”。我的问题是我希望这个程序在启动时自动运行。
可以只编辑 root 的 crontab 并将此命令粘贴在那里吗?或者有什么别的办法?
(我使用的是 Ubuntu 11.04。)
/etc/init.d/networking restart和invoke-rc.d networking restart(Debian)之间有什么真正的区别 吗?
我有几个与非交互式、非登录 shell 和 cron 作业相关的问题。
一季度。我已经读过非交互式、非登录 shell 仅 "load" $BASH_ENV。这究竟是什么意思?这是否意味着我可以指向$BASH_ENV一个文件,并且该文件将被引用?
Q2:假设我有一个cron指向带有 Bash shebang 的 Bash 脚本的条目,我可以假设我的 Bash 脚本加载了哪些环境变量和定义?
Q3:如果我添加SHELL=/bin/bash到我的顶部crontab,这到底有什么作用?是否意味着:
cron 本身在 Bash 中运行?crontab在猛砸何解释?shebangs在其中,正在运行$SHELL还有什么?
Q4:如何设置BASH_ENV定时任务?
我正在尝试将 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启用。
CPU是AMD GX-412TC SOC:
\n\n\nGX-412TC GE412TIYJ44JB 4 6W 2MB 1.0GHz/\n1.4GHz 不适用 DDR-1333 0-90\xc2\xb0C
\n
其中没有rdrand:
grep rdrand /proc/cpuinfo\n# nothing\nRun Code Online (Sandbox Code Playgroud)\n我在syslog机器启动后看到以下消息:
kernel: random: dd: uninitialized urandom read (512 bytes read)\nkernel: random: cryptsetup: uninitialized urandom read (32 bytes read)\nRun Code Online (Sandbox Code Playgroud)\n这些消息到底意味着什么?我能做什么?
\n这是否意味着dd并cryptsetup尝试读取/dev/urandom,但没有足够的熵?
我正在使用haveged守护程序,但它是在引导过程后期启动的,在出现此消息之后。
这是我的引导脚本启动顺序:
\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\nRun Code Online (Sandbox Code Playgroud)\n系统日志中的消息来自这两个脚本:
\n/etc/rcS.d/S06urandom -> dd\n/etc/rcS.d/S07crypto-swap -> cryptsetup\nRun Code Online (Sandbox Code Playgroud)\n应该haveged先开始urandom? …