编辑 /etc/init.d/rc.local 以在登录 tty 进程后运行

编辑 /etc/init.d/rc.local 以在登录 tty 进程后运行

执行 a 时ps-e,我在启动时看到以下内容:

PID  TTY CMD
...
1880 ?   my_auto_script
1881 tty1 login
1882 tty2 getty

...

my_auto_script是从 调用的/etc/rc.local。我是/etc/init.d/rc.local这样配置的:

Required-Start: $all
Default-Start: 2 3 4 5

所以这应该最后运行。但它似乎无法在任何tty进程之后运行。这就是我需要的。我该如何进行这项工作?

答案1

stty是从 产生的/etc/inittab。默认情况下,生成它们的行位于运行rc脚本的行之后。例如,在我的(非定制)中inittab,我有:

...
l0:0:wait:/etc/init.d/rc 0
l1:1:wait:/etc/init.d/rc 1
l2:2:wait:/etc/init.d/rc 2
l3:3:wait:/etc/init.d/rc 3
l4:4:wait:/etc/init.d/rc 4
l5:5:wait:/etc/init.d/rc 5
l6:6:wait:/etc/init.d/rc 6
...
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
3:23:respawn:/sbin/getty 38400 tty3
4:23:respawn:/sbin/getty 38400 tty4
5:23:respawn:/sbin/getty 38400 tty5
6:23:respawn:/sbin/getty 38400 tty6

所以rc.local实际上是有来源的你的ttys 已生成。我不认为交换线路是安全的。我认为你需要等待更有知识的人来确认/反驳。

如果您希望在用户登录之前进行最后一刻的自定义,为什么不添加一个脚本/etc/profile.d呢?这也会影响从终端仿真器启动的 shell,而不仅仅是 VT。

答案2

启动程序(包括从/etc/rc.local.这就是启动程序的要点:在启动时、用户登录之前执行。

如果您希望在系统启动时运行某个程序,并且希望在程序完成之前允许用户登录,您有两种选择。许多版本的 cron 允许您指定@reboot而不是运行时间来在启动时运行作业;检查您系统上的 crontab(5) 手册以查看是否@reboot受支持。或者,从(或其他一些启动脚本)运行您的程序/etc/rc.local,但在后台:

/path/to/my_auto_script &

相关内容