欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux常用shell脚本

程序员文章站 2024-02-19 18:54:04
...

1.批量kill进程号

eth='5668  5673  7733  7738  10512  10517  12453  12458  17134  17139  18075  18080  20340  20345  21120'

for name in $eth
do
	echo "Pid  is $name"
	echo "kill -9 $name"
	kill -9 $name
done
2.通过进程名kill
ps -ef| grep tomcat|awk '{print $2}'|xargs kill -9
3.查找所有的java进行,然后打印出来
pidlist=`ps -ef|grep java |grep -v "grep" |awk '{print $2}'`
if [ "$pidlist" = "" ]  
then   
  echo "no java process alive"  
else  
  for pid in ${pidlist}  
  {  
    echo "java process is: $pid:"  
  }    
fi  
4./home目录里面有data目录,data目录里面有a、b、c、d、e五个目录,现在要把data目录里面除过e目录之外的所有目录拷贝到/bak目录中
方法一:终端命令行下执行以下命令
cp -R `find /home/data -type d -path /home/data/e -prune -o -print | sed 1d ` /bak
########################################################
脚本实现
脚本存放路径/home/osyunwei.sh
vi /home/osyunwei.sh #编辑脚本,添加下面的代码
#!/bin/sh
cp -R `find /home/data -type d -path /home/data/e -prune -o -print | sed 1d ` /bak
chmod +x /home/osyunwei.sh #添加脚本执行权限
cd /home #进入脚本存放目录
./osyunwei.sh #执行脚本
########################################################

方法二:使用cp命令复制的时候,只能排除一个目录不被复制,如果想排除两个或者多个目录的话,就需要使用rsync命令来实现了,看下面的例子
如果要排除/home/data目录下面的a、b、c、三个目录,同时拷贝其它所有目录,执行以下命令
yum install rsync #安装rsync
rsync -av --exclude data/a --exclude data/b --exclude data/c data /bak

注意:--exclude后面的路径不能为绝对路径,必须为相对路径才可以,否则出错。
----------------------------------------------------------------------------
5.一键启停服务(需要服务结构都一致)
#!/bin/sh

echo "一键启停10.39服务"
command=$1

if [ $# -ne 1 ]
then
    echo "usage: $0   stop|start"
    exit
fi

server_list="pluto-ps-server-new pluto-ps-support-server pluto-ps-company-new"
echo "**********$command 服务**********"
for name in $server_list
do
	echo "######$command  $name ######"
	server_name=/data/$name/bin/server.sh
	#echo "/bin/bash $server_name $command"
	/bin/bash $server_name $command
	
	echo "等待3秒"
	sleep 3
	process_number=`ps -ef  | grep /data/$name | grep -v 'grep'| wc -l`
	#echo "$name 进程数:$process_number"
	processId=`ps -ef | grep /data/$name |  grep -v 'grep' | awk '{ print $2 }'`	
	for ID in $processId
	do
		echo "processID:$ID"
	done
	
	if [ $process_number -eq 1  ];then
		echo "$name 服务已启动"
	elif [ $process_number -eq 0  ];then
                echo "$name 服务已停止"
        else
		echo "$name 已开启多个进程,请确认服务是否正常"
	fi
done
echo "**********$command 服务结束**********"
6.查找配置文件进行替换
#!/bin/bash
if [ $# != 1 ] ; then
        echo "请输入文件路径  eg: 目标路径"
        exit 1;
fi
project=$1
Filepath=/data/$1/conf/env
WebPath=/data/$1/WEB-INF/classes

echo "配置文件目录:$Filepath"
remoting=remoting.properties



if [ -d "$WebPath" ];then
	cd $WebPath
	echo "替换目录:$WebPath"

	if [ -f  "$remoting" ]; then
        	echo "替换$remoting文件的配置"
	        find $Filepath -name $remoting | xargs sed -ri 's/rabbit.address=([0-9]{1,3}\.){3}[0-9]{1,3}/rabbit.address=192.168.10.59/g'
	        find $Filepath -name $remoting | xargs sed -i 's/rabbit.username=.*/rabbit.username=it/g'
	        find $Filepath -name $remoting | xargs sed -i 's/rabbit.password=.*/rabbit.password=its123/g'
	        find $Filepath -name $remoting | xargs sed -i 's/virtualhost=.*/virtualhost=\//g'
	        find $Filepath -name $remoting | xargs sed -i 's/virtual=.*/virtual=\//g'
        
        	#文件服务器
	        find $Filepath -name $remoting | xargs sed -ri 's/server=([0-9]{1,3}\.){3}[0-9]{1,3}/server=192.168.10.59/g'
	        find $Filepath -name $remoting | xargs sed -i 's/user=.*/user=it/g'
	        find $Filepath -name $remoting | xargs sed -i 's/password=.*/password=its123/g'
	fi
fi 
7.远程拷贝
将192.168.10.55机器上面/data/pluto-is/lib下面的文件拷贝到本地/data/pluto-is/lib下面
[[email protected] venus-web-fin]# scp [email protected]:/data/pluto-is/lib/*  /data/pluto-is/lib/
8.Linux shell判断文件和文件夹是否存在
myPath="/var/log/httpd/"  
myFile="/var /log/httpd/access.log"  

#这里的-d 参数判断$myPath是否存在  
if [ ! -d "$myPath"]; then  
  mkdir "$myPath"  
fi  
  
#这里的-f参数判断$myFile是否存在  
if [ ! -f "$myFile" ]; then  
  touch "$myFile"  
fi  

9.通过端口查看应用程序(例如:查找6028端口)

ps -ef  | grep  `netstat -anpl | grep 6028 | awk NR==1'{ print $7 }'  | grep -o "[0-9]*[0-9]" `