来自 技术 2019-01-28 的文章

day29:关闭服务|

开发十年,只剩下这套Java开发体系了>>>

1、

在centos6系统里,我们可以使用ntsysv关闭不需要开机启动的服务,当然也可以使用chkconfig工具来实现。

写一个shell脚本,用chkconfig工具把不常用的服务关闭。脚本需要写成交互式的,需要我们给它提供关闭的服务名字。

参考答案

#!/bin/bash#这个脚本用来关闭服务#作者:猿课-阿铭 www.apelearn.com#日期:2018-12-14LANG=enwhile :do chkconfig --list 2>/dev/null|grep '3:on' |awk '{print $1}' > /tmp/on_sev.txt echo -e "\033[32m系统里开启了这些服务: \033[0m" cat /tmp/on_sev.txt echo read -p "Please select a service from this list: " s if ! grep -qw "$s" /tmp/on_sev.txt thenecho -e "\033[31m你提供的服务名并未开启.\033[0m"continue fi chkconfig $s off breakdone

2、

在生产环境中,经常遇到tomcat无法彻底关闭,也就是说用tomcat自带shutdown.sh脚本无法将java进程完全关掉。所以,需要借助shell脚本,将进程杀死,然后再启动。

写一个shell脚本,实现上述功能。彻底杀死一个进程的命令是 kill -9 pid。

参考答案

#!/bin/bash#这个脚本用来彻底杀死Tomcat进程#作者:猿课-阿铭 www.apelearn.com#日期:2018-12-14dir=/usr/local/tomcat/bin/java_pc(){ pgrep java|wc -l}cd $dir./shutdown.shcount=0while [ $count -lt 5 ]do n=`java_pc` if [ $n -gt 0 ] thenkillall javacount=$[$count+1]sleep 1 elsebreak fidone n=`java_pc`if [ $n -gt 0 ]then killall -9 javafin=`java_pc`if [ $n -gt 0 ]then echo "Tomcat无法强制杀死。" exitficd $dir./startup.sh

3、

至少用两种方法,批量把当前目录下面所有文件名后缀为.bak的后缀去掉,比如1.txt.bak去掉后为1.txt

参考答案

#!/bin/bash#这个脚本用来去掉文件名后缀#作者:猿课-阿铭 www.apelearn.com#日期:2018-12-14for f in `ls -d ./*.bak `do# mv $f `echo $f|sed 's/.bak$//'` f1=`echo $f|awk -F '.bak$' '{print $1}' ` mv $f $f1done

4、

写一个shell脚本,查询指定域名的过期时间,并在到期前一周,每天发一封提醒邮件。

参考答案

#!/bin/bash#这个脚本用来检查域名是否到期#作者:猿课-阿铭 www.apelearn.com#日期:2018-12-14mail_u=admin@admin.com#当前日期时间戳,用于和域名的到期时间做比较t1=`date +%s`#检测whois命令是否存在,不存在则安装jwhois包is_install_whois(){ which whois >/dev/null 2>/dev/null if [ $? -ne 0 ] thenyum install -y epel-release yum install -y jwhois fi}notify(){ #e_d=`whois $1|grep 'Expiry Date'|awk '{print $4}'|cut -d 'T' -f 1` e_d=`whois $1|grep 'Expiration'|tail -1 |awk '{print $5}' |awk -F 'T' '{print $1}'` #如果e_d的值为空,则过滤关键词'Expiration Time' if [ -z "$e_d" ] then e_d=`whois $1|grep 'Expiration Time'|awk '{print $3}'` fi #将域名过期的日期转化为时间戳 e_t=`date -d "$e_d" +%s` #计算一周一共有多少秒 n=`echo "86400*7"|bc` e_t1=$[$e_t-$n] e_t2=$[$e_t+$n] if [ $t1 -ge $e_t1 ] && [ $t1 -lt $e_t ] then python mail.py $mail_u "Domain $1 will to be expired." "Domain $1 expire date is $e_d." fi if [ $t1 -ge $e_t ] && [ $t1 -lt $e_t2 ] then python mail.py $mail_u "Domain $1 has been expired" "Domain $1 expire date is $e_d." fi}#检测上次运行的whois查询进程是否存在#若存在,需要杀死进程,以免影响本次脚本执行if pgrep whois &>/dev/nullthen killall -9 whoisfiis_install_whoisfor d in aaa.com bbb.com aaa.cndo notify $ddone

5、

写一个shell脚本,当我们执行时,提示要输入对方的ip和root密码,然后可以自动把本机的公钥增加到对方机器上,从而实现密钥认证。

参考答案

#!/bin/bash#这个脚本用来自动配置密钥认证#作者:猿课-阿铭 www.apelearn.com#日期:2018-12-14read -p "输入一个IP地址: " ipread -p "输入此机器的root密码: " pasdis_install(){ if ! rpm -q $1 &>/dev/null thenyum installl -y $1 fi}is_install openssh-clientsis_install expectif [ ! -f ~/.ssh/id_rsa.pub ]then echo -e "\n" |ssh-keygen -P ''ficat > key.expect <<EOF#!/usr/bin/expectset host [lindex \$argv 0]set passwd [lindex \$argv 1]spawn ssh-copy-id root@\$hostexpect { "yes/no" { send "yes\r"; exp_continue} "password:" { send "\$passwd\r" }}expect eofEOFchmod a+x key.expect./key.expect $ip $pasd

标签:   Java      Tomcat      CentOS      Linux      OpenSSL      核心区      JavaScript代码   
上一篇:传统IDC部署网站(六)
下一篇:没有了