/etc/init.d/rcS文件中/bin/sh后的进程都无法启动?

时间:2021-05-20 16:50:20
问题的提出:
我要实现开机自启动,编辑 vi  /etc/init.d/rcS,将我的程序加到如下位置:

.... .......................................#其他内容
/bin/sh
/upepri/mptmsu/bin/restartacqdatasys.sh


上面/upepri/mptmsu/bin/restartacqdatasys.sh是我要开机自启动的程序,如果放在/bin/sh后面,开机时,没启动起来,但放在/bin/sh前面,开机后就启动了,即改成如下就可以开机自启动


.... .......................................#其他内容
/upepri/mptmsu/bin/restartacqdatasys.sh
/bin/sh

我是菜鸟。刚从事linux,大侠们能说下为何放在后面不行的原因吗?是不是/bin/sh会挂起,导致其后所有的都不能执行?

8 个解决方案

#1


应该是  #!/bin/sh  吧

#2


弄得我也想知道怎么回事了

#3


二楼说得对,第一行应该是 #!/bin/sh
如果是 /bin/sh,那么它会执行不带参数的 /bin/sh,sh 会一直等待输入,由于 sh 进程不会退出,因而后面的进程都没有机会执行。
无需放到 rcS 中,自己在命令行下执行一下这个脚本,就可以发现它会产生一个新的交互式 shell 进程,按 Ctrl+D 或执行 exit 命令后,才继续执行脚本里后面的命令。

#4


/bin/sh是原有的,还是你加的?

#5


引用 3 楼 acrofox_yeah 的回复:
二楼说得对,第一行应该是 #!/bin/sh
如果是 /bin/sh,那么它会执行不带参数的 /bin/sh,sh 会一直等待输入,由于 sh 进程不会退出,因而后面的进程都没有机会执行。
无需放到 rcS 中,自己在命令行下执行一下这个脚本,就可以发现它会产生一个新的交互式 shell 进程,按 Ctrl+D 或执行 exit 命令后,才继续执行脚本里后面的命令。


第一行就是 #!/bin/sh啊,我说的最后一行是 /bin/sh
我现在全部贴贴出来吧:
/etc/init.d/rcS文件中/bin/sh后的进程都无法启动?
图片中的倒数第二行我要开机自启动的程序,如果放在倒数第一行后面即/bin/sh后就不会开机自启动,但是放在/bin/sh前面就可以,为啥呢?

#6


#3 楼已经解释了,道理一样啊

#7


引用 6 楼 zhxianbin 的回复:
#3 楼已经解释了,道理一样啊

谢谢解答,高分结贴

#8


引用 3 楼 acrofox_yeah 的回复:
二楼说得对,第一行应该是 #!/bin/sh
如果是 /bin/sh,那么它会执行不带参数的 /bin/sh,sh 会一直等待输入,由于 sh 进程不会退出,因而后面的进程都没有机会执行。
无需放到 rcS 中,自己在命令行下执行一下这个脚本,就可以发现它会产生一个新的交互式 shell 进程,按 Ctrl+D 或执行 exit 命令后,才继续执行脚本里后面的命令。


谢谢解答,高分结贴

#1


应该是  #!/bin/sh  吧

#2


弄得我也想知道怎么回事了

#3


二楼说得对,第一行应该是 #!/bin/sh
如果是 /bin/sh,那么它会执行不带参数的 /bin/sh,sh 会一直等待输入,由于 sh 进程不会退出,因而后面的进程都没有机会执行。
无需放到 rcS 中,自己在命令行下执行一下这个脚本,就可以发现它会产生一个新的交互式 shell 进程,按 Ctrl+D 或执行 exit 命令后,才继续执行脚本里后面的命令。

#4


/bin/sh是原有的,还是你加的?

#5


引用 3 楼 acrofox_yeah 的回复:
二楼说得对,第一行应该是 #!/bin/sh
如果是 /bin/sh,那么它会执行不带参数的 /bin/sh,sh 会一直等待输入,由于 sh 进程不会退出,因而后面的进程都没有机会执行。
无需放到 rcS 中,自己在命令行下执行一下这个脚本,就可以发现它会产生一个新的交互式 shell 进程,按 Ctrl+D 或执行 exit 命令后,才继续执行脚本里后面的命令。


第一行就是 #!/bin/sh啊,我说的最后一行是 /bin/sh
我现在全部贴贴出来吧:
/etc/init.d/rcS文件中/bin/sh后的进程都无法启动?
图片中的倒数第二行我要开机自启动的程序,如果放在倒数第一行后面即/bin/sh后就不会开机自启动,但是放在/bin/sh前面就可以,为啥呢?

#6


#3 楼已经解释了,道理一样啊

#7


引用 6 楼 zhxianbin 的回复:
#3 楼已经解释了,道理一样啊

谢谢解答,高分结贴

#8


引用 3 楼 acrofox_yeah 的回复:
二楼说得对,第一行应该是 #!/bin/sh
如果是 /bin/sh,那么它会执行不带参数的 /bin/sh,sh 会一直等待输入,由于 sh 进程不会退出,因而后面的进程都没有机会执行。
无需放到 rcS 中,自己在命令行下执行一下这个脚本,就可以发现它会产生一个新的交互式 shell 进程,按 Ctrl+D 或执行 exit 命令后,才继续执行脚本里后面的命令。


谢谢解答,高分结贴