我有一個位於服務器上的可執行文件。 許多用戶可以使用SSH登錄到此服務器並執行二進制文件。爲多個用戶鎖定可執行文件
我想獨家訪問執行這個二進制文件的每個用戶。 如果可能的話,我想有一個用戶隊列,這將被逐一服務。
是否有可能使用bash腳本來做到這一點?
假設我打電話給我的二進制文件爲my.exec
,腳本文件爲access.sh
。 我可以保證每個用戶只能通過access.sh
訪問my.exec
。 因此,在這個可執行文件上編寫一個包裝將會很容易。
此外,可執行文件需要提供可變參數。
我這裏有一個部分解決方案 -
#!/bin/bash
# Locking
LOCK_FILE="/tmp/my.lock"
function create_lock_and_execute {
echo "Waiting for Lock"
while [ -f ${LOCK_FILE} ]
do
username=`ls -l ${LOCK_FILE} | cut -f 3 -d " "`
echo $username is using the lock.
sleep 1
done
(
# Wait for lock ${LOCK_FILE} (fd 200).
flock -x 200
echo "Lock Acquired..."
# Execute Command
echo "Executing Command : $COMMAND"
${COMMAND}
) 200>${LOCK_FILE}
}
function remove_lock {
rm -f ${LOCK_FILE}
}
# Exit trap function
function exit_on_error {
echo "Exiting on error..."
remove_lock
exit 1
}
# Exit on kill
function exit_on_kill {
echo "Killed, exiting..."
remove_lock
exit 1
}
# Exit normaly
function exit_on_end {
echo "Exiting..."
remove_lock
exit 0
}
trap exit_on_kill KILL
trap exit_on_error ERR
trap exit_on_end QUIT TERM EXIT INT
create_lock_and_execute
感謝
我覺得這是答案的一部分。但是,我不明白我如何維護一個請求隊列。 – Raj 2013-04-23 16:30:27
我不太確定您在多用戶環境中提供的解決方案。 – Raj 2013-04-25 08:26:05