如何在 rc.local 中运行脚本

如何在 rc.local 中运行脚本

我是这个平台的新手。我有关于rc.本地。我创建了一个自动运行的脚本罗斯科尔roslaunch rosbridge_server rosbridge_websocket.launch.此脚本名称为汽车脚本内容如下:

#!/bin/sh
cd $home
xterm -hold -e "roscore" &
xterm -hold -e "roslaunch rosbridge_server rosbridge_websocket.launch"
exit 0

我必须在 rc.local 中运行此脚本。创建的 rc.local 文件是:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

sudo auto.sh
sh '/home/moguztas/auto.sh'

exit 0

我哪里做错了?我按照 9 步解决方案我怎样才能让“rc.local”在启动时运行?但它没有运行。

答案1

问题完全解决。解决方案如下。

首先创建一个要在其中运行的脚本。我希望rosbridge_websocket在计算机启动时自动运行。我的脚本名称是汽车位于home/username/auto.sh。脚本内容如下:

#!/bin/bash

cd $home

source /opt/ros/indigo/setup.bash 

roslaunch rosbridge_server rosbridge_websocket.launch

exit 0

您必须检查脚本文件是否可执行。要执行脚本文件,请使用以下命令:$ sudo chmod u+x /home/username/auto.sh

rc.local要执行的操作,请运行位于 的此脚本/etc/rc.local。它是使用 创建的gksudo gedit /etc/rc.local。其中的内容为rc.local

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

/home/username/auto.sh

exit 0

最后,您必须使用 重新启动系统$ sudo reboot。当您启动计算机时,您的脚本已完全正常工作。

答案2

rc.local在图形用户界面(即 X)可用之前执行。因此,xterm在脚本中执行auto.sh将失败。如果您希望在启动时弹出 xterm,则需要通过 Ubuntu 的“启动应用程序”打开它。使用 root 权限运行脚本会更复杂一些,因为您必须在其中为其设置 NOPASSWD 条目/etc/sudoers并确保只有 root 才能编辑它。

启动应用程序

相关内容