gzip 命令在 shell 脚本中不起作用

gzip 命令在 shell 脚本中不起作用

如果我通过 crontab 运行脚本,gzip 无法正常工作。如果我手动运行同一脚本,gzip 就可以正常工作。

我们的脚本中的命令是

gzip -vf $path/file.eee

在我的脚本中,我生成一个格式为的日志文件.exp,然后尝试使用 gzip 命令对其进行压缩

gzip -vf $PATH/file.exp

在此之后,我希望file.exp.gzgzip 能够成功但失败了,我看到 gzip 状态返回 141。除了 gzip 之外,这个脚本运行良好,其他命令也运行良好。

$PATH是路径file.exp。我将其复制file.exp/root文件夹。在根文件夹中,我放置了一个具有gzip -vf /root/file.exp命令的测试脚本。我将此测试脚本添加到 crontab 中,它运行良好。完成 crontab 后,我在根文件夹中看到了输出,我可以看到file.exp.gz文件。在 crontab 中,我给出了正确的用户和命令。

答案1

退出代码:

在退出值中,大于 128 的值表示由于信号而终止,大于 128 的数值表示哪个信号导致终止。因此,如果我们从 OP 的退出代码 141 中减去 128,我们会得到 13,它对应于 SIGPIPE(man 7 signal用于标准信号及其对应整数值的列表)。

手册页将 SIGPIPE 的评论列为“管道损坏:向没有读取器的管道写入”。

多变的:

您真的使用$PATH/$path吗?

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/bin
echo $path
/usr/local/sbin /usr/local/bin /usr/bin

关于 cron 任务:

Cron 作业在最小环境下运行。$PATH在 cron 和 shell 会话中有所不同。

根据您的信息部分答案:

我猜想,$PATH您的 shell 会话中的最后一个条目包含您的脚本的路径。file.exp是在此路径中创建的。

相关内容