Я пытаюсь проверить, открыт ли какой-либо файл или нет. Я использую lsof для этого, и я использую оболочку bash. Я написал сценарий bash, чтобы проверить, открыт ли файл или нет. Но я столкнулся с какой-то странной проблемой. Когда я запускаю сценарий из командной строки, используя user a
, я получаю ожидаемый результат. Но, когда я запускаю скрипт, используя user b
, я получаю другой результат.Сценарий Bash возвращает разные результаты для разных пользователей
Мне нужно вызвать скрипт из Talend Studio как user b
, поэтому я не могу переключиться на user a
и выполнить сценарий. Сценарий имеет 777
разрешения для user b
и 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
Мне нужно добавить user b
в sudoers ли?
@Bohemian/@ fedorqui Пожалуйста, помогите выше – shashank
Каков ожидаемый результат и какой результат вы получите как пользователь b? – chepner
@chepner При запуске как «пользователь a», я вижу «файл, копируемый» в качестве вывода, пока файл не закончит копирование, а затем распечатает «Скопировано». Когда я запускаю его как «пользовательский b», я получаю «Скопировано », даже если когда файл все еще скопирован –
shashank