Linux系統下,如何使程式開機自啟動。可以通過修改開機啟動腳本 /etc/init.d/rcS ,添加要啟動程式的路徑完成。
比如,核心4.1.15中/etc/init.d/rcS修改如下:
#!/bin/sh
#
# rcS Call all S??* scripts in /etc/rcS.d in
# numerical/alphabetical order.
#
# Version: @(#)/etc/init.d/rcS 2.76 19-Apr-1999 [email protected]
#
PATH=/sbin:/bin:/usr/sbin:/usr/bin
runlevel=S
prevlevel=N
umask 022
export PATH runlevel prevlevel
export QT_QPA_PLATFORM=eglfs
export FB_MULTI_BUFFER=2
#/usr/bin/dashboard &
/usr/bin/3Ddash &
#/usr/bin/serialPort &
# Make sure proc is mounted
#
[ -d "/proc/1" ] || mount /proc
#
# Source defaults.
#
. /etc/default/rcS
#
# Trap CTRL-C &c only in this shell so we can interrupt subprocesses.
#
trap ":" INT QUIT TSTP
#
# Call all parts in order.
#
exec /etc/init.d/rc S
其中:
PATH=/sbin:/bin:/usr/sbin:/usr/bin
設定預設有效執行路徑
runlevel=S
The following runlevels are defined:
N System bootup (NONE).
S Single user mode (not to be switched to directly)
0 halt
1 single user mode
2 .. 5 multi user mode
6 reboot
使用者等級,“S"表示單使用者;
prevlevel=N
目前不太清楚,貌似shell變量
umask 022
權限的基本碼-umask(屏蔽位),按規定,檔案夾的基本碼rwxrwxrwx(777),檔案的基本碼rw-rw-rw-(666)
umask的值在檔案中有設定,預設情況下是022
export PATH runlevel prevlevel
export用于傳遞一個或多個變量的值到其他shell,相當于聲明了一些“全局變量”
#/usr/bin/dashboard &
/usr/bin/3Ddash &
#/usr/bin/serialPort &
為添加的自啟動程式路徑,注意要包含在PATH中,這樣才是有效路徑
trap ":" INT QUIT TSTP
捕捉INT、QUIT、TSTP信号
trap 為shell中捕捉信号的指令,其基本形式有三種:
(1)trap "cmd" signal-list
trap收到與signal-list列出的信号相同時,執行cmd指令
(2)trap signal-list
執行信号的本身預設的操作
(3)trap " " signal-list
忽視signal-list指定的信号
exec /etc/init.d/rc S
轉去執行/etc/init.d/rc的檔案内容