2つの shell script で片側を優先して排他制御しようとしています。優先側で

ln -s $$ $lock_file
trap "rm $lock_file 2>/dev/null" 0

としてロックファイルを作っています。
ただこのスクリプトはロックファイルを消さずに死ぬ可能性があるので、非優
先側ではロックファイルと併せてプロセスの存在(ロックファイルが無い or
あってもプロセスが存在しない)をチェックしたいんですが

if [ ! -L $lock_file -o ! $(kill -0 $(readlink $lock_file)) ]; then...

だとプロセスの有無に関わらず常に真になります。どう書くのが正しいのでしょ
うか。