使用 rc.local 运行脚本:脚本有效,但在启动时无效

2024-03-26

我有一个需要在启动时启动的 node.js 脚本and在 www-data 用户下运行。在开发过程中,我总是以以下方式开始脚本:

su www-data -c 'node /var/www/php-jobs/manager.js

我确切地看到发生了什么,manager.js 现在工作得很好。搜索所以我发现我必须把它放在我的/etc/rc.local。另外,我学会了将输出指向日志文件并附加2>&1“将 stderr 重定向到 stdout”,它应该是一个守护进程,所以最后一个字符是&.

最后,我的/etc/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.

su www-data -c 'node /var/www/php-jobs/manager.js >> /var/log/php-jobs.log 2>&1 &'

exit 0

如果我自己运行这个(sudo /etc/rc.local):是的,它有效!但是,如果我重新启动则不会node进程正在运行时,/var/log/php-jobs.log不存在,因此 manager.js 不起作用。怎么了?


在这个 rc.local 脚本示例中,我在执行的第一行使用 io 重定向到我自己的日志文件:

#!/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.

exec 1>/tmp/rc.local.log 2>&1  # send stdout and stderr from rc.local to a log file
set -x                         # tell sh to display commands before execution

/opt/stuff/somefancy.error.script.sh

exit 0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 rc.local 运行脚本:脚本有效,但在启动时无效 的相关文章

  • Linux命令:如何仅“查找”文本文件?

    经过几次谷歌搜索后 我得出的结论是 find my folder type f exec grep l needle text exec file grep text 这非常不方便 并且会输出不需要的文本 例如 mime 类型信息 还有更好
  • 为什么我无法“停用”pyenv / virtualenv?如何“修复”安装

    我是新安装的乌班图16 04并考虑到使用最新版本的开发pandas我安装了Python 3 6 0使用虚拟环境 选择 3 6 0 的一个原因是因为我在某处读到这个版本的 Python 可以原生处理虚拟环境 即无需安装任何其他东西 无论如何安
  • tar 命令在提取时更改所有者:组

    使用此命令提取文件时tar zxf bluez arm package tgz文件和目录的所有者 1000 组 脉冲 是 更改如下例 Example drwxrwxr x 4 1000 pulse 1024 Jul 21 00 32 dbu
  • Linux环境下串口数据转换为TCP/IP

    我需要从Linux系统的串口获取数据并将其转换为TCP IP发送到服务器 这很难做到吗 我有一些基本的编程经验 但对 Linux 的经验不多 有没有开源应用程序可以做到这一点 在 Linux 中您不需要编写程序来执行此操作 只是pipe h
  • 你能在 MS Windows 上用 Python 将 stdin 作为文件打开吗?

    在 Linux 上 我使用 subbprocess Popen 来运行应用程序 该应用程序的命令行需要输入文件的路径 我了解到我可以将路径 dev stdin 传递到命令行 然后使用 Python 的 subproc stdin write
  • Bash shell 中的“[ ]”与“[[ ]]”[重复]

    这个问题在这里已经有答案了 这可能已经得到回答 但我还是要问 我有两个版本的脚本 comp sh bin sh export tDay date Y m d newfile filename tDay filename filename 2
  • 如何使用AWK从文件中连续输出行

    我有一个多行文件 我想连续输出文件的某些行 比如第一次 从第1行打印到第5行 下次 打印第2行到第6行 依此类推 我发现 AWK 是一个非常有用的函数 我尝试自己编写代码 但它什么也没输出 以下是我的代码 bin bash for n in
  • 让子进程等待直到收到父进程的信号

    我想从父级创建 N 个子级 我希望所有的孩子同时开始 一个功能 测量时间 因此 我将该函数放入信号处理程序中 当父级完成创建 分叉 所有子级时 它会向所有子级发送信号 使用kill children id 以让 make 开始 代码如下 但
  • 如何在 C++ 中检查文件是否已被另一个应用程序打开?

    我知道 有is open C 中的函数 但我希望一个程序检查文件是否尚未被另一个应用程序打开 有没有办法使用标准库来做到这一点 编辑 在答案中澄清这是针对 Linux 应用程序的 不仅标准库没有这个功能 一般来说也是不可能的 你可以 在li
  • 如何在 Ubuntu 14.04 LTS 中安装 ia32-libs (Trusty Tahr)

    我昨天安装了 Ubuntu 14 04 Trusty Tahr 一切看起来都还好 但是当我尝试编译一些C代码时 我遇到了以下错误 该错误似乎是由于操作系统缺乏 32 位架构支持造成的 错误输出如下 usr bin ld i386 archi
  • 输出bash脚本的结果

    例如 如果我选择运行一个 bash 脚本 该脚本将输出 回显 时间 例如CheckDate sh 我如何从 Java 运行它 然后在我的 Java 程序中打印 bash 脚本的结果 日期 试试这个代码 String result null
  • 自动将 Linux 文件名重命名为 Windows 中合法的新文件名

    我想将 linux 文件重命名为在 windows 中合法的文件名 它的长度不应超过允许的长度 并且不应包含 Windows 中不允许的字符 有时我将论文的标题复制到文件名 它们有特殊字符 例如 or 另外 从 pdf 中复制和粘贴标题时
  • urllib.request 模块无法安装在我的系统中

    尝试使用以下命令安装 urllib request 模块 sudo pip install urllib request 但它回来了 Downloading unpacking urllib request Could not find a
  • ModemManager:mmcli 获取信号强度

    我无法检索 Sierre Wireless MC7304 上的信号强度 另外通过 mmcli 发送 AT 命令似乎不起作用 sudo mmcli m org freedesktop ModemManager1 Modem 0 signal
  • 在 bash 中传递多个数组作为参数

    我已经成功地能够调用单个数组作为参数 但在传递多个数组时遇到问题 这是我到目前为止所拥有的 calling function array1 1 2 3 4 array2 a b c d array3 called function arra
  • 检查 VT-x 是否已激活而无需在 Linux 中重新启动?

    我有一台配备 Intel Core i5 M 450 2 40GHz 的笔记本电脑 显然有 VT x 但没有 VT d 我有 Ubuntu 12 04 32 位 但希望在其上运行基于虚拟 64 位终端的 Linux 我如何知道 BIOS 是
  • 系统调用:sys_exit()、SYS_exit 和 exit() 之间的区别

    SYS exit sys exit 和 exit 之间有什么区别 我的理解是 Linux内核提供了系统调用 这些调用在man 2 syscalls 这些系统调用的包装函数由glibc它们的名称与系统调用大多相似 我的问题 在man 2 sy
  • Linux 中如何确定哪个进程正在使用某个端口

    我目前正在其默认端口上运行 RethinkDB 因为如果我将浏览器指向localhost 8080我看到 RethinkDB Web 界面 我想关闭 RethinkDB 并使用以下命令在另一个端口上重新打开它 port offset争论 然
  • Git 责备文件中的作者列表

    有没有办法找到在 repo 中编辑 java 文件中的类的作者列表git blame 作者列表必须是唯一的 我尝试使用以下命令 但它没有删除重复项 并且每行输出中都有 作者 一词 不需要对输出进行排序 但我希望获得没有任何重复的输出 git
  • 将文件夹中结构化的预构建文件集添加到 android out 文件夹

    我为arm编译了glibc 这与Android glibc或bionic C不同 因为我编译的glibc环境将有助于提供更多api 现在我可以在 Android 运行时将 glibc 环境复制到 system 文件夹中 并且在执行 chro

随机推荐

  • 如何使用 iOS WKWebView 注入 JavaScript 回调来检测 onclick 事件?

    我正在使用一个WKWebView显示一个包含三个按钮的 HTML 的网站 我想在单击特定按钮时在本机应用程序中运行一些 Swift 代码 关于 HTML 这三个按钮如下所示
  • 如何使用node.js从蓝牙设备接收数据

    我是 javascript 和 node js 的新手 目前从事医疗项目 首先我将解释我的工作 我必须从蓝牙设备接收数据 正常血压率 脉搏率 并使用 node js 在 Web 应用程序中显示读数 我不知道如何从蓝牙设备 病人监护仪 接收数
  • 管理用户对 ASP.NET 中页面的访问

    我正在使用 MembershipProvider 目前有 3 个角色 用户 超级用户 管理员 另外 我还有只有管理员和超级用户才能看到的页面 对于这些页面 我使用 Web 配置中的配置
  • 如果第一个“return”之后有一个“else”,那么性能是否重要?

    我现在看到了两种不同的方法来创建布尔返回方法 bool Case1 if A return true else return false bool Case2 if A return true return false 哪一个更快 不写还有
  • Symfony2:动态生成嵌入表单

    Symfony2 有可能表格动态生成 http symfony com doc current cookbook form dynamic form modification html cookbook form events submit
  • 八叉树邻居搜索

    我有一个八叉树 它存储基于体素的流体 当我模拟流体时 我需要访问当前节点周围的叶子 如何实现这样的搜索 您可以假设该节点存储了一个指向其父节点的指针 也许还需要其他数据 假设每个八叉树节点还保存其在八叉树中的 3D 索引 1 及其深度 生成
  • kube proxy日志无法打开服务Nodeport

    服务类型 节点端口 问题 无法访问 clusterIP Nodeport 并找到 kube proxy pod 日志 如下所示 无法打开端口 跳过它 err listen tcp4 32060 bind 地址已在使用中 port Descr
  • 当我尝试通过 CLI 部署 Azure 云服务时,“对象引用未设置为对象的实例”

    我在 Azure PowerShell 中运行以下命令来部署我的节点项目 Publish AzureServiceProject ServiceName
  • 移动没有历史记录的 Subversion 存储库

    有很多关于使用版本历史记录移动 Subversion 历史记录的帖子 但我想做一些不同的事情 基本上 我们有一个已用作概念证明的存储库 我们希望将其存档 然而 我们想要创建一个新的存储库 其中包含一些代码的最新版本 但保存了作者历史记录 但
  • 使用 ref 并拥有 ProxyComponent 时如何访问实际组件

    我们有一个对 React 组件的引用 并且想要调用该组件的方法 当使用 ref 时 它是一个 ProxyComponent 对象 我如何将它用作我的实际组件 或者如何才能做到这一点 我看到 有属性 renderedElement 并且在属性
  • 如果选择“图像/文件”,Laravel 会验证字段吗?

    我有一个 图像 字段 类型是file并且只需要验证是否选择了图像 这意味着它也可以为空 我试过这样 avatar gt mimes jpeg jpg png gif max 100000 但这也是必需的 我仍然尝试使用参数present a
  • EF 4.3.1 与 VS 2011

    我需要知道是否可以开始在 VS 2011 中使用最新版本的 EF 4 3 1 而无需按照所述安装这些 CTP 组件here http blogs msdn com b adonet archive 2011 06 30 announcing
  • postgis如何处理使用不同SRID发送的坐标

    我正在运行 django 应用程序 并且我正在为我的数据库使用 PostGis 扩展 我试图更好地了解发送坐标时幕后发生的情况 特别是因为我正在使用转换为不同 SRID 的不同坐标系 我的问题有三个 在数据库中创建点或多边形时 django
  • 使用 pytest 在子文件夹中进行测试

    我正在使用 python pytest 来运行我的单元测试 我的项目文件夹是 Main 包含数据文件 A txt Main Tests 我运行 pytest 的文件夹 Main Tests A test 包含测试文件的文件夹 A test文
  • 如何使用 printf 制作“进度条”? [复制]

    这个问题在这里已经有答案了 许多命令行工具都实现基于文本的进度条 就像rpm安装一样 安装 45 the 随着百分比增长 同时保持在单行 我想要的是类似的东西 我需要一个进度指示器只占一行 也就是说 当百分比增长时 它被覆盖 而不是创建一个
  • pandas groupby 转置 str 列

    这就是我想做的 gt gt gt import pandas as pd gt gt gt dftemp pd DataFrame a 1 3 2 3 b a a b c d e split a b 0 1 a 1 1 a 2 1 b 3
  • Laravel 5 获取视图名称

    我正在努力获取 L5 中的视图名称 就像在 WP 中一样 我想添加特定的页面名称 视图名称 用于样式 如下所示 div class page login h1 Inloggen h1 div div class page register
  • 如何使用javascript检查网页中是否加载了Font Awesome?

    我需要检查网页中是否有 Font Awesome 如果没有 我将用 javascript 加载它 有点像 facebook sdk 检查是否存在包含 id facebook jssdk 的脚本元素 如果是 则返回 不执行任何操作 如果不存在
  • 如何使用 api 创建 PointField?

    我正在使用 django rest framework 作为 API 但是当我发出发布请求时 会向我发送以下错误 location Invalid format string or unicode input unrecognized as
  • 使用 rc.local 运行脚本:脚本有效,但在启动时无效

    我有一个需要在启动时启动的 node js 脚本and在 www data 用户下运行 在开发过程中 我总是以以下方式开始脚本 su www data c node var www php jobs manager js 我确切地看到发生了