AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 11195
Accepted
Adrian Grigore
Adrian Grigore
Asked: 2009-05-23 01:57:12 +0800 CST2009-05-23 01:57:12 +0800 CST 2009-05-23 01:57:12 +0800 CST

为什么我的 shell 脚本在启动时不执行

  • 772

我希望我的 openSuse 11.1 服务器在启动时运行一个小型 shell 脚本。我创建了一个脚本并在 /etc/init.d/rc5.d/ 中放置了一个指向该脚本的符号链接。然而,脚本并没有被执行。

这是我要运行的脚本:

#!/bin/bash
#monitor RAID array
/sbin/mdadm --monitor --daemonize [email protected] /dev/md0 /dev/md1 /dev/md2 /dev/md3
#start SVN server
/usr/bin/svnserve -d

当我自己从命令行运行该脚本时,该脚本工作正常(svn 服务器和 mdadm 已按预期进行守护程序)。但是重新启动服务器时似乎没有启动。

这可能会帮助您弄清楚我做错了什么:

linuxplug:~ # ls -l /etc/init.d/rc5.d/exe*
lrwxrwxrwx 1 root root 25 May 22 11:43 /etc/init.d/rc5.d/executeatstartup.sh -> /root/executeatstartup.sh
linuxplug:~ # ls -l /root/executeatstartup.sh
-rwxr-xr-x 1 root root 172 Apr 12 13:43 /root/executeatstartup.sh
linuxplug:~ # which svnserve
/usr/bin/svnserve

我究竟做错了什么?

编辑:我已将指向 shell 脚本的链接重命名如下:

linuxplug:~ # ls -l /etc/init.d/rc5.d/    
lrwxrwxrwx 1 root root 25 May 22 12:03 S99executeatstartup -> /root/executeatsta
    rtup.sh

但是,脚本仍然没有在启动时运行。

bash boot opensuse rc.d
  • 7 7 个回答
  • 4116 Views

7 个回答

  • Voted
  1. Vincent De Baere
    2009-05-23T02:00:25+08:002009-05-23T02:00:25+08:00

    您应该将链接命名为 S99something,其中 S 代表开始,99 代表该目录中脚本的启动顺序。查看该目录中的其他链接...

    此外:您可能需要重新编写脚本以支持启动/停止参数,并添加 K99something 符号链接以确保在离开此运行级别时服务正确停止。

    • 1
  2. Vincent De Baere
    2009-05-26T01:19:18+08:002009-05-26T01:19:18+08:00

    您是否已经按照 opensuse 网站上列出的步骤进行操作 ?那肯定行得通。

    Cool Solutions也有很好的解释

    • 1
  3. Best Answer
    Stefan Thyberg
    2009-05-26T01:23:47+08:002009-05-26T01:23:47+08:00

    您是否尝试过在 /etc/init.d/boot.local 中添加对脚本的调用?试试看是否效果更好。还有几个其他 boot.* 文件在启动的不同部分运行。

    • 1
  4. hayalci
    2009-05-23T02:28:04+08:002009-05-23T02:28:04+08:00

    您应该将该命令放在 /etc/rc.local 中(或在 opensuse 中等效)

    initscripts 必须有一定的语法。您可以查看其中一个示例,但您需要的是 /etc/rc.local

    • 0
  5. Mike Mazur
    2009-05-26T01:37:26+08:002009-05-26T01:37:26+08:00

    绝对应该有一种方法可以从 /etc/rc*. 您可能想要研究的另一种选择是 cron。使用 vixie-cron,可以使用 crontab 中的 @reboot 关键字指定要在重启时运行的任务:

    Instead of the first five fields, one of eight special strings may
    appear:
    
    string         meaning
    ------         -------
    @reboot        Run once, at startup.
    @yearly        Run once a year, "0 0 1 1 *".
    @annually      (same as @yearly)
    @monthly       Run once a month, "0 0 1 * *".
    @weekly        Run once a week, "0 0 * * 0".
    @daily         Run once a day, "0 0 * * *".
    @midnight      (same as @daily)
    @hourly        Run once an hour, "0 * * * *".
    

    上表来自 Jeremy Zawodny 的博客文章,我不允许以新用户的身份发布链接。在 Google 上搜索“vixie-cron 指定启动时的任务”,这是第一个结果。

    正如文章中提到的,这是允许用户在启动时运行命令而不授予他们 root 访问权限的好方法。

    • 0
  6. LapTop006
    2009-05-26T05:57:25+08:002009-05-26T05:57:25+08:00

    还值得检查 /etc/inittab 以确保您默认启动到运行级别 5,查找如下行:

    id:2:initdefault:

    那来自我的 debian 笔记本电脑,显示我默认启动到运行级别 2(这是 debian 的默认设置)。

    在 RedHat 衍生产品(如 openSuSE)上,运行级别 5 是运行 X11 时的默认值,运行级别 3 是启动到控制台的默认值。

    • 0
  7. Jason Tan
    2009-06-18T23:00:55+08:002009-06-18T23:00:55+08:00

    opensuse 有 selinux 吗?如果是这样,它是否已打开,您的脚本的上下文是否与其他启动脚本相同?试试看getenforceselinux中是否安装了开启。尝试ls -lZ /etc/init.d/rc5.d/查看脚本的上下文

    • 0

相关问题

  • 可以为自己的 .bashrc 添加哪些有用的东西?[关闭]

  • 什么是有用的 .screenrc 设置?

  • 在 OpenSuse 或 Ubuntu for Linux 新手上安装 Subversion

  • GNU 屏幕和 .bashrc

  • 在 .bashrc 中设置环境变量的最佳方法是什么?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve