在启动时自动运行脚本:脚本无法正常工作。

18 浏览
0 Comments

在启动时自动运行脚本:脚本无法正常工作。

我想在我的Parallella板上的启动时运行一个bash脚本,它装有Ubuntu。我在Stack Overflow上搜索并在这里找到了指示:

我的bash脚本是test.sh,只有一行代码:

echo "Hello World" &> /home/qsp/WIP/test/hello.txt

1) 我尝试的第一种方法是将脚本的绝对路径添加到/etc/rc.local中:

/home/qsp/WIP/test/test.sh

2) 我尝试的第二种方法是按照上面接受的答案进行操作。

sudo mv test.sh /etc/init.d/
sudo update-rc.d test.sh defaults 

在这两种情况下,脚本在启动后被执行,并且在文件夹中创建了一个名为hello.txt的文件。然而,文件的内容为空(所有者为root)。我想知道是否有什么遗漏。谢谢。

======更新=======

根据Skynet的答案,我将我的脚本改为:

echo "Hello World" | tee /home/qsp/WIP/test/hello.txt

启动后,脚本正确地将内容写入文件。我还有一个问题,为什么我的原始带有&>的脚本不起作用,尽管如果从命令行运行仍然有效。

0
0 Comments

问题的原因是脚本在自动启动时不能正常工作,解决方法是创建一个.desktop文件,并配置系统在登录时自动启动。

首先,创建一个.desktop文件,文件路径为~/.config/autostart/test_script.desktop。可以使用以下命令:

$ vim ~/.config/autostart/test_script.desktop

在文件中添加以下信息:

[Desktop Entry]

Type=Application

Name=Test script

Exec=~/test.sh

X-GNOME-Autostart-enabled=true

注意,其中的~/test.sh应该指向你创建的脚本。然后保存文件。

将.desktop文件设置为可执行:

$ chmod o+x ~/.config/autostart/test_script.desktop

重新启动电脑,下次登录时你的脚本应该会自动运行。

0
0 Comments

问题原因:脚本在启动时自动运行时没有正常工作。

解决方法:在编辑了/etc/rc.local并添加了命令后,确保脚本总是以exit 0结束。同时,使用chmod命令将其设置为可执行。

具体步骤如下:

1. 编辑/etc/rc.local文件,在其中添加需要运行的命令。

2. 确保脚本以exit 0结束。

3. 使用chmod命令将脚本设置为可执行。例如:chmod 777 test.sh

4. 将输出行更改为echo "Hello World" | tee /home/qsp/WIP/test/hello.txt

关于为什么需要将&>更改为| tee,以及两者之间的区别,请参考以下解释:

tee是一个命令,它的工作方式类似于shift,但是有一些不同之处,使其可以在这种情况下在shell脚本中使用重定向。

在更改为tee后,脚本成功将输出写入文件。关于为什么在启动后&>不起作用,而在命令行中运行时仍然起作用的原因,可能是由于不同的环境变量或权限设置导致的。

0
0 Comments

问题原因:脚本没有正确地在启动时自动运行。

解决方法:按照第一个SO问题中引用的方式,将脚本编写成init脚本风格。例如:

case "$1" in
start)
    #启动代码
    ;;
stop)
    #停止代码
    ;;
restart)
    #重启代码
    ;;
esac

同时,可以参考https://github.com/fhd/init-script-template/blob/master/template,了解更多关于init脚本的模板。

0