Dan*_*sta 10 linux bash supervisord
我开始使用supervisord控制服务器中的服务。我不是 linux 的专业用户,但可以很好地使用它并让它运行。
出于好奇,我注意到 supervisord 中的大多数命令似乎都被称为:
[program:install]
command=bash -c "/src/etc/install.sh"
Run Code Online (Sandbox Code Playgroud)
我已经阅读了 bash 的 man,并且知道-c应该使用它来插入在字符串之后传递的变量。
那么bash -c考虑到没有传递/使用变量,在主管(或任何其他地方)中使用而不是直接调用脚本(如下例所示)有什么意义?
[program:install]
command=/src/etc/install.sh
Run Code Online (Sandbox Code Playgroud)
谢谢!
Mar*_*ala 10
诸如路径名扩展 ( *, ?)、命令列表 ( ;, &&, ||)、重定向 ( <, >, |, )等 Shell 功能不是由 supervisord 实现的,它只将命令拆分为参数字符串数组。
这bash -c可能只是对可能想在命令中使用此类功能的新手用户的帮助。例如,它避免了令人惊讶的
command=echo foo > /tmp/bar
Run Code Online (Sandbox Code Playgroud)
产出foo > /tmp/bar,而不是写foo来/tmp/bar。
-c与变量关系不大。任何额外的参数在bash只可作为脚本参数$0,$1等等的命令,但该功能已很少有任何使用。例如bash -c 'echo $0 $0' foo输出foo foo。
| 归档时间: |
|
| 查看次数: |
15088 次 |
| 最近记录: |