从子进程执行shell命令在父进程中执行(以锁定shell)

时间:2015-06-10 11:54:20

标签: linux bash shell unix

我有一个名为lock的用户定义命令。执行该命令后,系统将被锁定。如果我们只给出正确的密码,那么只有命令 提示发生。现在,我想从脚本中执行lock命令 在后台运行。如果我们执行脚本lock命令被执行,但它不会锁定当前终端。它只锁定背景bash。它不会在当前的bash中执行。如何解决这个问题?

感谢。

1 个答案:

答案 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。