但是当我将相同的代码包装在 bash 脚本文件中时,它总是返回 0 作为退出代码。
这是因为当你再次执行脚本时,执行脚本的进程的 PID 发生了变化。因此,该--use-pid
标志会导致lockfile-create
认为锁定文件需要被覆盖。
根据您的用例,您可能希望摆脱该--user-pid
标志。但是,在这种情况下,您需要确保自己清理锁定文件。
引自man lockfile-create
:
-p, --use-pid
Write the parent process id (PPID) to the lockfile whenever a lock‐
file is created, and use that pid when checking a lock's validity.
See the lockfile_create(3) manpage for more information. This
option applies to lockfile-create and lockfile-check. NOTE: this
option will not work correctly between machines sharing a filesys‐
tem.
您可以通过尝试在同一脚本中再次创建日志文件来验证您观察到的行为:
#! /bin/bash
LOCK=alert
lockfile-create --use-pid --retry 0 $LOCK
LOCK_CREATED=$?
echo "Lock file creation status $LOCK_CREATED"
lockfile-create --use-pid --retry 0 $LOCK
LOCK_CREATED=$?
echo "Lock file creation status $LOCK_CREATED"