为什么“立即关闭”(没有其他参数)不运行初始化脚本?

为什么“立即关闭”(没有其他参数)不运行初始化脚本?

我在 Pi 上运行 Rasbpian,并且我有一个脚本/etc/rc0.d(或更准确地说,是一个符号链接/etc/init.d/myscript.sh),它执行一些 GPIO 输出以通知用户可以关闭电源。

如果我运行sudo shutdown -h now,脚本就会运行,并且系统会崩溃。
如果我运行sudo shutdown now,脚本会执行不是运行,但系统崩溃了。

我找不到任何文档来说明在shutdown now没有其他参数的情况下运行时真正应该发生的情况。

-h在这种情况下有什么区别?运行shutdown now真的不会调用 runlevel0吗?

更新:我发现了这个文档(unixhelp.ed.ac.uk),表示不带参数的默认行为是进入运行级别1。但我在 中也有一个脚本/etc/rc1.d,但它不能在shutdown.

根据要求,以下是前几行last -x(箭头是我的):

pi       pts/3        vidar-ramdals-ma Fri Jan  9 18:07   still logged in   
runlevel (to lvl 2)   3.12.28+         Fri Jan  9 18:04 - 18:07  (00:02)    
reboot   system boot  3.12.28+         Fri Jan  9 18:04 - 18:07  (00:02)    
shutdown system down  3.12.28+         Fri Jan  9 18:04 - 18:04  (00:00)    
runlevel (to lvl 0)   3.12.28+         Fri Jan  9 18:04 - 18:04  (00:00) <- shutdown -h now   
pi       pts/3        vidar-ramdals-ma Fri Jan  9 18:02 - down   (00:01)    
runlevel (to lvl 2)   3.12.28+         Fri Jan  9 18:01 - 18:04  (00:02)    
reboot   system boot  3.12.28+         Fri Jan  9 18:01 - 18:04  (00:02)    
pi       pts/3        vidar-ramdals-ma Fri Jan  9 17:57 - crash  (00:04) <- shutdown now   
pi       pts/3        vidar-ramdals-ma Fri Jan  9 01:30 - 01:34  (00:03)    
pi       pts/3        vidar-ramdals-ma Fri Jan  9 01:29 - 01:29  (00:00)    
runlevel (to lvl 2)   3.12.28+         Fri Jan  9 01:23 - 18:01  (16:38)    
reboot   system boot  3.12.28+         Fri Jan  9 01:23 - 18:04  (16:41)   

runlevel (to lvl 0)行出现在我之后shutdown -h now,而该crash行来自shutdown now.是否shutdown now会导致“崩溃”并阻止其运行初始化脚本?

答案1

文件夹中文件的名称rc.d很重要,并且不清楚您将 .txt 文件的符号链接命名为什么/etc/init.d/myscript.sh

示例来自/etc/rc1.d

  lrwxrwxrwx 1 root root 25 Nov  3  2011 K99readahead_early -> ../init.d/readahead_early
  lrwxrwxrwx 1 root root 25 Nov  3  2011 K99readahead_later -> ../init.d/readahead_later
  lrwxrwxrwx 1 root root 22 Nov  3  2011 S02lvm2-monitor -> ../init.d/lvm2-monitor
  lrwxrwxrwx 1 root root 18 Nov  3  2011 S13cpuspeed -> ../init.d/cpuspeed

start如果提供了 S,那么它将使用;运行脚本。如果提供了 K,它将运行带有 的脚本stop。该整数值就是应该运行的优先级。

相关内容