trap可以屏蔽信号
详细情况:
http://man.linuxde.net/trap
#!/bin/bash
trap "" 2
n=1
while (( $n<=100 ))
do
echo "number is $n"
sleep 1s
let n++
done
~
运行上面脚本,ctrl+c无法终止。(可以后台运行,然后kill进程)
下面是一个扩展,可以锁定终端屏幕
#!/bin/bash
#lock the terminal
#屏蔽终止信号,按ctrl+c会执行lock_nice函数
trap "lock_nice" 2 3 15
#tab键上面的反引号
TTY=`tty`
lock_nice()
{
echo -e "\r Nice.lock nice. the terminal stays locked ! \r"
}
SAVEDSTTY=`stty -g`
#不显示输入字符
stty -echo
echo -n -e "Enter you passwd to lock $TTY :"
read PASSWD
echo -e "\r"
while :
do
#read form tty only !!
echo -e -n "input passwd for unlock:"
read RESPONSE < $TTY
echo -e "\r"
if [ "$RESPONSE" = "$PASSWD" ];
then
echo " unlocking..."
break
fi
# wrong passwd. return
lock_nice
echo -e " wrong passwd and terminal is locked ! \r"
done
#以终端可读的格式显示
stty $SAVEDSTTY
也可以固定密码
#!/bin/bash
#lock the terminal
trap "lock_nice" 2 3 15
TTY=`tty`
lock_nice()
{
echo -e "\r Nice.lock nice. the terminal stays locked ! \r"
}
SAVEDSTTY=`stty -g`
PASSWD=qwe
while :
do
#read form tty only !!
echo -e -n "input passwd for unlock:"
read RESPONSE < $TTY
echo -e "\r"
if [ "$RESPONSE" = "$PASSWD" ];
then
echo " unlocking..."
break
fi
# wrong passwd. return
lock_nice
echo -e " wrong passwd and terminal is locked ! \r"
done
#以终端可读的格式显示
stty $SAVEDSTTY