簡體   English   中英

Bash腳本為不同的用戶返回不同的結果

[英]Bash script returns different results for different users

我正在嘗試檢查特定文件是否打開。 我為此使用lsof,並且正在使用bash shell。 我寫了一個bash腳本來檢查文件是否打開。 但是,我面臨一個奇怪的問題。 當我使用user a從命令行運行腳本時,得到了預期的結果。 但是,當我使用user b運行腳本時,得到了不同的結果。

我需要以user b身份從Talend Studio調用腳本,因此無法切換到user a並執行腳本。 該腳本對user b具有777權限,並且user b也是腳本的所有者。 下面是腳本。 請幫忙。

#! /bin/bash
# declare STRING variable

FILENAME=$1
if [ "$FILENAME" == "" ]; then
echo "No file found..exiting"
exit
fi
#While loop to check if the file has been completely copied
while true; do
#$(lsof /mnt/disk1/$FILENAME | wc -l)
SZ=$(/usr/sbin/lsof <Path to file>/$FILENAME | wc -l)
if [ $SZ -gt 1 ]; then
echo "File $FILENAME  is being copied in the Landing Zone"
sleep 10
else
echo "Copied $FILENAME................"
break
fi
done

我是否需要在sudoers中添加user b

您使用“ lsof”的目的只是為了驗證$ FILENAME是否打開,對嗎? 因此,我認為更好的方法是在$ FILENAME打開時創建一個標志文件,而不使用“ lsof”進行驗證,因為“ lsof”是一種昂貴的處理方法。 例如:

在您的“着陸區”中:

#!/bin/bash

FILENAME=/foo/foo1
if [ -f /tmp/filename.flag ] ; then
    echo "the file is opened now ..."
else
    touch /tmp/filename.flag
    cp -arf $FILENAME /tmp/. # or use rsync to copy it
    echo "file copy is done ..."
    rm -rf /tmp/filename.flag
fi

而且,有時您可以“觸摸/tmp/filename.flag”停止此任務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM