十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
判断进程是否存在。示例:
创新互联是一家集网站建设,金凤企业网站建设,金凤品牌网站建设,网站定制,金凤网站建设报价,网络营销,网络优化,金凤网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
timer=20 #20s定时器
flag=1 #标识进程是否存在
while [ $timer -gt 0 ]
do
sleep 2
ps -aux | grep 进程名 | grep -v grep /dev/null #查询进程
[ $? -ne 0 ] flag=0 break #进程不存在了就退出循环
let timer-=1
done
[ $flag -eq 1 ] kill -9 $(ps -aux | awk '/ bash$/{print $1}')
vim /etc/ssh/sshd_config
找到ClientAliveInterval 参数,如果没有就自己加一行。
ClientAliveInterval 参数的数值是秒,比如你设置为540,就是9分钟.
ClientAliveInterval 540
对于ClientAliveCountMax
指如果发现客户端没有相应,则判断一次超时,这个参数设置允许超时的次数,比如10。
ClientAliveInterval 540
ClientAliveCountMax 10;
则代表允许超时 5400秒 = 90分钟。
方法2:配置客户端
1 linux下的ssh命令
vim /etc/ssh/ssh_config
然后找到里面的ServerAliveInterval 参数,如果没有你同样自己加一个就好了。参数意义相同,都是秒数,比如9分钟:
ServerAliveInterval 540
2 SecureCRT
设置反空闲,如下图所示
securecrt_to
3 Putty
启用putty keepalive
putty - Connection - Seconds between keepalives ( 0 to turn off ),默认为0,改为60。
一个方法是:信号+子进程的方法...显得比较繁琐...
定义一个全局变量,作为标志位
fork,让子进程去执行系统调用...
然后父进程调用alarm,设置周期为20秒,这样每隔20秒会收到一个SIGALRM;
然后注册SIGALRM和SIGCHILD这两个信号的处理函数,可以让其中一个信号处理函数去修改全局变量..(子进程返回时候父进程会收到一个SIGCHILD信号)
再然后,调用sigsuspend让父进程休眠,设置好信号掩码,保证两个信号可以唤醒父进程--SIGALRM和SIGCHILD。
然后就是你父进程被某个信号唤醒了...此时就判断是怎么被唤醒(用刚才那个全局变量判断)...要是SIGALRM,就说明超时了.要是SIGCHILD就说明没超时...后面就是你自己的事情了.两种情况分别处理呗..
当然,另外一种简单的方法(比较耗费CPU)...还是需要子进程...
先fork,然后调用waitpid,设置为立即返回,这样可以立刻判断子进程的状态,然后若时间没超出你的要求,就继续waitpid,直到时间超出20秒或者子进程在时限之前返回...这样轮询显然非常浪费CPU...(如何判断可以 man waitpid)
别的方法...我也想不出来了...
对所有用户设置自动注销功能:
首先,以root用户登录系统,输入 vi /etc/profile 命令,编辑profile文件。
查找TMOUT,若没有,则可以在文件最后添加如下语句:
TMOUT=300
export TOMOUT
如果查找到了,直接设置时间。
300表示自动注销的时间为300秒。
编辑好文件后,保存,退出,重新登录,设置生效。
一、有个工具叫screen,可以虚拟终端,通过命令screen -S name 来创建一个名为name的虚拟终端,这样即使终端超时自动断开,再登录到系统之后只需要screen -r name就可以继续连接到刚才创建的虚拟终端,且所有的操作都会继续不会中断。
二、远程工具可以进行相关的设置,比如secretcrt这个工具就可以设置每10秒操作一下,这样就不会中断。