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的文件內容