【问题标题】:#!bin/sh call program in centOS bad command startup#!bin/sh 在centOS 错误命令启动中调用程序
【发布时间】:2017-03-11 01:28:03
【问题描述】:

在 Debian 中运行良好:

#!/bin/sh

time /usr/libexec/postfix/smtp $@

在 CentOS 的邮件日志中出现错误:

warning: process /usr/libexec/postfix/smtp_time pid 28456 exit status 1
warning: /usr/libexec/postfix/smtp_time: bad command startup -- throttling

调试错误exec 2>>/tmp/smtp.log; set -x; time /usr/libexec/postfix/smtp "$@"

+ time /usr/libexec/postfix/smtp -n smtptime -t unix -u -c
which: no /usr/libexec/postfix/smtp in ((null))
ERROR: /usr/libexec/postfix/smtp cannot be found.

但是文件存在并且有 r+x 权限。

【问题讨论】:

  • 不是你的直接问题,但$@ 有问题——它会拆分和扩展你的论点。请改用"$@"
  • 感谢@CharlesDuffy 的回答,它不会进行任何更改。
  • 无论如何,“错误的命令启动”在这里并没有真正告诉我们任何有用的信息——它表示命令快速退出,所以 postfix 决定不再(非常频繁地)运行它,但是没有任何有用的信息可以告诉我们为什么它会迅速退出。
  • 是的,我知道这不会改变你的直接行为,这就是为什么我说“不是你的直接问题”,并将其添加为评论而不是答案。不过,如果您尝试使用空格传递命令行参数,它肯定有所作为。
  • 哦,是的,@CharlesDuffy 对!问题不是脚本..错误在某个完全不同的地方fatal: unknown service: smtp/tcp

标签: bash centos postfix-mta


【解决方案1】:

从您的set -x 日志记录来看,您的/bin/sh 使用的time 的实现似乎试图找到与which 一起运行的文件,而不查看该文件是否已被指定为完全-合格的路径。因此,考虑:

#!/bin/sh
export PATH=/usr/libexec/postfix:/bin:/usr/bin
time smtp "$@"

【讨论】:

  • 现在错误显示相同的数据,但不是关于 smtp,而是关于这个调用脚本 smtp_time warning: /usr/libexec/postfix/smtp_time: bad command startup -- throttling
  • 非常感谢@Charles,现在我有更多关于错误的信息,以及在哪里搜索它。
猜你喜欢
  • 1970-01-01
  • 2016-05-17
  • 1970-01-01
  • 2022-08-09
  • 1970-01-01
  • 1970-01-01
  • 2018-09-03
  • 2016-01-03
  • 2013-08-06
相关资源
最近更新 更多