【问题标题】:Shell Script on Boot up does not execute on Raspberry pi启动时的 Shell 脚本不会在 Raspberry pi 上执行
【发布时间】:2014-08-28 04:34:09
【问题描述】:

我想在运行 raspbian wheezy 的 Raspberry Pi 启动后运行以下命令:

  1. sudo gcc -lpthread server.c -o wifiserver.o
  2. sudo ./wifiserver.o

我创建了以下文件并运行了以下步骤:

  1. 创建了一个名为auto_server_start的脚本文件。

  2. 内容如下:

    #!bin/bash
    # /etc/init.d/auto_server_start
    ### BEGIN INIT INFO
    # Provides: auto_server_start
    # Required-Start: $all
    # Required-Stop: $remote_fs $syslog
    # Default-Start: 2 3 4 5
    # Default-Stop: 0 1 6
    # Short-Description: wifi server script
    # Description: Start wifi server at bootup
    ### END INIT INFO
    
    case "$1" in
      start)
        echo "running server program"
        sudo gcc -lpthread server.c -o wifiserver.o
        sudo ./wifiserver.o
        ;;
      stop)
        echo "stopping customized script"
        ;;
      *)
        echo "Usage: /etc/init.d/auto_server_start start|stop"
        exit 1
        ;; 
    esac
    
    exit 0
    
  3. 将此名为auto_server_start的文件复制到/etc/init.d/目录,并使用chmod +x添加执行权限。

  4. 然后sudo update-rc.d auto_server_start defaults

它给出了一些关于 mathkernel 的警告,但我认为这与我的脚本无关。

但是在软重启时,我检查了ps -etop,但我的wifiserver 进程没有出现。

请提出建议。

PS:我检查了命令gcc./wifiserver.o 没有给出警告和错误。

【问题讨论】:

  • 为什么要在重启时重新编译二进制文件??
  • sudo 在这里毫无意义且可能有害。初始化脚本已经拥有它需要的所有权限。
  • 将编译后的二进制文件放入/usr/local/bin 并更改脚本以从那里运行它。检查您的系统日志以获取失败或警告消息。如果您需要帮助解释它们,请在此处发布它们。
  • 您好,谢谢...我将可执行文件放在 /usr/local/bin 文件夹中...我没有正确提供文件路径...我想它可以与 / home/pi/wifiserver.o 也因为我的可执行文件在那里。谢谢!! @tripleee
  • 发布固定脚本作为答案并接受它,这样这个问题就不再显示为未解决。谢谢。

标签: linux bash raspberry-pi raspbian init.d


【解决方案1】:

创建了一个名为 auto_server_start 的脚本文件。

内容如下:

#!bin/bash

# /etc/init.d/auto_server_start

### 开始初始化信息

# 提供:auto_server_start

# 必需-开始:$all

#Required-Stop: $remote_fs $syslog

# 默认开始:2 3 4 5

# 默认停止:0 1 6

# 简短描述:wifi 服务器脚本

#描述:开机时启动wifi服务器

### 结束初始化信息

案例“$1”

开始)

echo "running server program"

/usr/local/bin/wifiserver.o

;;

停止)

echo "stopping customized script"

;;

*)

echo "Usage: /etc/init.d/auto_server_start start|stop"

exit 1

;; 

esac

退出 0

将此名为 auto_server_start 的文件复制到 /etc/init.d/ 目录并使用 chmod +x 添加执行权限。

然后 sudo update-rc.d auto_server_start 默认值。

【讨论】:

    猜你喜欢
    • 2015-08-11
    • 1970-01-01
    • 1970-01-01
    • 2020-10-24
    • 2019-09-20
    • 1970-01-01
    • 1970-01-01
    • 2017-09-14
    • 1970-01-01
    相关资源
    最近更新 更多