我有一个名为lock
的用户定义命令。执行该命令后,系统将被锁定。如果我们只给出正确的密码,那么只有命令
提示发生。现在,我想从脚本中执行lock
命令
在后台运行。如果我们执行脚本lock
命令被执行,但它不会锁定当前终端。它只锁定背景bash。它不会在当前的bash中执行。如何解决这个问题?
感谢。
答案 0 :(得分:0)
您可以在使用DEBUG陷阱从命令提示符执行命令之前执行命令:
trap 'command' DEBUG
这将在每个命令之前执行命令。更改后台脚本以在系统锁定时创建某种标记文件。并使您的命令检查该文件是否存在。像这样:
if [[ -f lockfile ]]
then p=
while [[ "$p" != secret ]]
do echo -n password:
read p
done
rm -f lockfile
fi
我并不是说这是安全的。
另一种方法:
运行两个shell。较低的shell循环请求密码,然后运行上层。上壳是普通壳。后台任务在想要锁定终端时将上层shell杀死,将控制权返回到下层shell。