我在我的iMX7双开发板上运行Linux4.9.11-1.0.0。我有一个test.sh文件,我想在启动时运行。目前,它中只有一堆echo语句(只是为了测试目的)。
当我按下板上的开关打开它时,我看到一堆初始化的东西出现了。我希望我的echo文件中的test.sh语句在启动时也显示在这个初始化序列中。最终,一旦这起作用,计划是做真正的事情,而不是简单的echo语句。我只想确保脚本在此时启动时运行。
到目前为止,我已经创建了test.sh文件,并且能够在板启动后手动运行它。在结束exit语句之前,我将以下内容添加到我的/etc/rc.local文件中:
sh '/home/root/test.sh'我已经验证了这个rc.local文件的顶部有#!/bin/sh -e。我还做了以下工作:
$ chown root /etc/rc.local
$ chmod 777 /etc/rc.local完成所有这些之后,我通过键入以下内容验证了它是否正常工作:
$ /etc/init.d/rc.local start在此之前,一切都按预期进行,在完成最后一步时,我将看到echo语句。然而,当我去尝试重新启动板时,我根本看不到打印的初始化内容中的echo语句。
我遗漏了什么?也许它实际上是在启动时运行的,但由于某种原因,我没有看到输出?
发布于 2018-07-25 00:34:05
如果您已经完成了诸如chmod +x /etc/rc.local之类的所有操作,那么您的命令就会运行,只是在任何地方都看不到它的记录。
这是我的/etc/rc.local:
$ cat /etc/rc.local
#!/bin/bash
touch /var/lock/subsys/local
echo "hickory stick"在这里,我使用了修改后的Bash,它记录到syslog,我在另一个名为:向syslog发送bash历史记录的U&L问答中讨论了这个问题。
当我的系统启动时,我看到以下消息通过Bash记录:
/var/log/bash-log/127.0.0.1.log:2018-07-24T22:04:24.609094-04:00 centos7 rc.local:山核桃棒
但没有其他地方。要将其记录到syslog/rsyslog,通常可以使用logger命令这样做:
$ logger hi然后,您可以在/var/log/messages、/var/log/syslog或journal -xef中看到它。我用的是日记:
$ journalctl -xef
Jul 24 20:23:04 centos7 bash[1629]: HISTORY: PID=1629 UID=0 USER=root CMD=man logger
Jul 24 20:23:24 centos7 bash[1629]: HISTORY: PID=1629 UID=0 USER=root CMD=logger hi
Jul 24 20:23:24 centos7 vagrant[1811]: hi您应该能够使用logger从脚本中的命令中捕获输出,如下所示:
$ cat /etc/rc.local
#!/bin/bash
touch /var/lock/subsys/local
echo "hickory stick" | logger现在,当我们重新启动:
$ journalctl -xef
...
Jul 24 20:31:41 centos7 bash[1629]: HISTORY: PID=1629 UID=0 USER=root CMD=journalctl -xe
Jul 24 22:24:00 centos7 logger[1286]: hickory stick
Jul 24 22:24:00 centos7 sshd[1270]: Server listening on 0.0.0.0 port 22.
Jul 24 22:24:00 centos7 sshd[1270]: Server listening on :: port 22.
Jul 24 22:24:00 centos7 systemd[1]: Starting Permit User Sessions...我们通过logger看到我们添加到/etc/rc.local中的消息。
logger非常有用,您可以让它登录到一个文件中,而不是通过-f开关,您还可以用-t开关控制日志中显示的标记。
$ logger -t "smurfs" hi
$ journalctl -xe | grep smurfs
Jul 24 20:38:24 centos7 smurfs[1764]: hi发布于 2018-07-24 21:53:08
你试过把它放进你的.bash_profile里吗?这是一个在登录时运行的文件。所以当每个人都登录或者技术上说是在创业时,它就不会打开了.但是,如果您使用的是一个用户,这可能是一个简单的解决方案,您需要什么。
转到您的主目录,如果您是root用户,它实际上是/root not / home /root (至少在我熟悉的发行版中是如此)。也许"echo $HOME“来确认您的主目录。)
一旦到了那里,就做:
ls -la应该会看到一个名为.bash_profile的隐藏文件,打开它并查看一下。大多数都有一些注释。您可以直接在那里运行您的脚本,也可以通过以下方式调用它:
sh '/home/root/test.sh'
https://unix.stackexchange.com/questions/458227
复制相似问题