Linux

常用命令

# 解压   
tar -zxvf 

#移除目录:
rm -rf [目录名字]

#统计某个字符出现的次数
grep -o objStr  filename|wc -l
#如果是多个字符串出现次数,可使用:#直接用\| 链接起来即
grep -o ‘objStr1\|objStr2‘  filename|wc -l  

#从某个字符出现开始查询
sed -n ‘/XXXXXXXXXXXXXXX/,// p‘ a.txt |more

#查看端口被占用进程
lsof -i :9105
netstat -tunlp |grep 9105

#安装jdk
yum -y list java*  # 列出可安裝
yum install -y java-1.8.0-openjdk-devel.x86_64   #安裝

运行jar

#1、使用XShell登录目标机器

#2、查看占用端口的PID
lsof -i:[端口号] 

#3、杀死进程
kill -s 9 [进程号]

#4、移除上版的jar包
rm -rf /root/jar/xxxxx.jar
#5、上传程序至/root/jar/

#6、使用命令,启动程序
nohup java -jar ./xxxx.jar --spring.profiles.active=prod >xxxx.out 2>&1 &

#7、查看日志
tail -f xxxx.out

启动Tomcat

# 启动服务的方式
systemctl start tomcat.service

# 查找tomcat进程
 ps -ef|grep tomcat 
# 启动
 ./startup.sh
# 停止
 ./shutdown.sh
# 编辑配置
  vi catalina.sh
# 结束进程
kill -9 31968

# 赋予执行sh权限
chmod +x  xxx.sh给执行权限

# 查看动态的日志
tail -f catalina.out  

设置固定ip

网络适配器为NAT模式

#编辑文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33

#修改
BOOTPROTO=static #这里讲dhcp换成static
ONBOOT=yes #将no换成yes
#新增
IPADDR=192.168.10.10 #静态IP
GATEWAY=192.168.10.2 #默认网关,需要再vmware中查看这个网关
NETMASK=255.255.255.0 #子网掩码

#保存文件
:wq

#重启网络
systemctl restart network

防火墙开放端口

#查看状态
firewall-cmd --state //running 表示运行
#重新加载
firewall-cmd --reload
#开放端口 permanent 永久
firewall-cmd --permanent --zone=public --add-port=8080-8081/tcp
#关闭端口
firewall-cmd --permanent --zone=public --remove-port=8080-8081/tcp
#开放端口 permanent 临时
firewall-cmd --zone=public --add-port=8080-8081/tcp
#查看所有开放服务
firewall-cmd --permanent --zone=public --list-services
#查看所有开放端口
firewall-cmd --permanent --zone=public --list-ports
#查看所有开放端口
 iptables -L -n

执行etl工具kettle

# 1、赋权限制:
chmod +x ./data-integration/*.sh
# 2、查看权限:
ls -l  ./data-integration
# 3、查看部署成功:
./data-integration/kitchen.sh
# 4、运行job: 
/root/etl/data-integration/kitchen.sh -file=/root/etl/file/CDR_NURSING.kjb  -log=log.log
# 5、运行sh:
sh CDR_NURSING.sh

# 6、CDR_NURSING.sh文件
#!/bin/sh
/root/etl/data-integration/kitchen.sh -file=/root/etl/file/CDR_NURSING.kjb  -logfile=/root/etl/file/logs/LOG_$(date -d "today" +"%Y%m%d_%H%M%S").log

启动停止多个jar

启动文件设置

多文件同时启动

gollum.sh

#!/bin/sh
#chkconfig: 2345 80 05
#description: gollum

##jar包
export EUREKA=/root/gollum/jar/server-eureka-1.0.jar
export ZUUL=/root/gollum/jar/server-zuul-1.0.jar
export LAB=/root/gollum/jar/service-laboratory-1.0.jar
export EXAM=/root/gollum/jar/service-examination-1.0.jar
export CONSULT=/root/gollum/jar/service-consultation-1.0.jar

##端口
export EUREKA_port=8000
export ZUUL_port=8080
export LAB_port=9106
export EXAM_port=9107
export CONSULT_port=9110

##日志
export EUREKA_log=/root/gollum/jar/log/eureka.out
export ZUUL_log=/root/gollum/jar/log/zuul.out
export LAB_log=/root/gollum/jar/log/laboratory.out
export EXAM_log=/root/gollum/jar/log/examination.out
export CONSULT_log=/root/gollum/log/consultation.out

##配置文件,dev/prod
export spring_config=prod
 
case "$1" in
 
start)
        ## 启动EUREKA
        echo "--------EUREKA 开始启动--------------"
        nohup java -jar $EUREKA --spring.profiles.active=$spring_config >$EUREKA_log 2>&1 &
        EUREKA_pid=`lsof -i:$EUREKA_port|grep "LISTEN"|awk ‘{print $2}‘`
        until [ -n "$EUREKA_pid" ]
            do
              EUREKA_pid=`lsof -i:$EUREKA_port|grep "LISTEN"|awk ‘{print $2}‘`  
            done
        echo "EUREKA pid is $EUREKA_pid" 
        echo "--------EUREKA 启动成功--------------"
 
        ## 启动ZUUL
        echo "--------开始启动ZUUL---------------"
        nohup java -jar $ZUUL --spring.profiles.active=$spring_config >$ZUUL_log 2>&1 &
        ZUUL_pid=`lsof -i:$ZUUL_port|grep "LISTEN"|awk ‘{print $2}‘` 
        until [ -n "$ZUUL_pid" ]
            do
              ZUUL_pid=`lsof -i:$ZUUL_port|grep "LISTEN"|awk ‘{print $2}‘`  
            done
        echo "ZUUL pid is $ZUUL_pid"     
        echo "---------ZUUL 启动成功-----------"
		
		## 启动LAB
        echo "--------开始启动LAB---------------"
        nohup java -jar $LAB --spring.profiles.active=$spring_config >$LAB_log 2>&1 &
        LAB_pid=`lsof -i:$LAB_port|grep "LISTEN"|awk ‘{print $2}‘` 
        until [ -n "$LAB_pid" ]
            do
              LAB_pid=`lsof -i:$LAB_port|grep "LISTEN"|awk ‘{print $2}‘`  
            done
        echo "LAB pid is $LAB_pid"     
        echo "---------LAB 启动成功-----------"
		
		## 启动EXAM
        echo "--------开始启动EXAM---------------"
        nohup java -jar $EXAM --spring.profiles.active=$spring_config >$EXAM_log 2>&1 &
        EXAM_pid=`lsof -i:$EXAM_port|grep "LISTEN"|awk ‘{print $2}‘` 
        until [ -n "$EXAM_pid" ]
            do
              EXAM_pid=`lsof -i:$EXAM_port|grep "LISTEN"|awk ‘{print $2}‘`  
            done
        echo "EXAM pid is $EXAM_pid"     
        echo "---------EXAM 启动成功-----------"
		
		## 启动CONSULT
        echo "--------开始启动CONSULT---------------"
        nohup java -jar $CONSULT --spring.profiles.active=$spring_config >$CONSULT_log 2>&1 &
        CONSULT_pid=`lsof -i:$CONSULT_port|grep "LISTEN"|awk ‘{print $2}‘` 
        until [ -n "$CONSULT_pid" ]
            do
              CONSULT_pid=`lsof -i:$CONSULT_port|grep "LISTEN"|awk ‘{print $2}‘`  
            done
        echo "CONSULT pid is $CONSULT_pid"     
        echo "---------CONSULT 启动成功-----------"
		
		echo "===startAll success==="
        ;;
 
 stop)
        P_ID=`ps -ef | grep -w $EUREKA | grep -v "grep" | awk ‘{print $2}‘`
        if [ "$P_ID" == "" ]; then
            echo "===EUREKA process not exists or stop success"
        else
            kill -9 $P_ID
            echo "EUREKA killed success"
        fi
		P_ID=`ps -ef | grep -w $ZUUL | grep -v "grep" | awk ‘{print $2}‘`
        if [ "$P_ID" == "" ]; then
            echo "===ZUUL process not exists or stop success"
        else
            kill -9 $P_ID
            echo "ZUUL killed success"
        fi
		P_ID=`ps -ef | grep -w $LAB | grep -v "grep" | awk ‘{print $2}‘`
        if [ "$P_ID" == "" ]; then
            echo "===LAB process not exists or stop success"
        else
            kill -9 $P_ID
            echo "LAB killed success"
        fi
		P_ID=`ps -ef | grep -w $EXAM | grep -v "grep" | awk ‘{print $2}‘`
        if [ "$P_ID" == "" ]; then
            echo "===EXAM process not exists or stop success"
        else
            kill -9 $P_ID
            echo "EXAM killed success"
        fi
		P_ID=`ps -ef | grep -w $CONSULT | grep -v "grep" | awk ‘{print $2}‘`
        if [ "$P_ID" == "" ]; then
            echo "===CONSULT process not exists or stop success"
        else
            kill -9 $P_ID
            echo "CONSULT killed success"
        fi	
		
        echo "===stopAll success==="
        ;;   
 
restart)
        $0 stop
        sleep 2
        $0 start
        echo "===restartAll success==="
        ;;   
esac	
exit 0

可单文件启动

gullum-one.sh

#!/bin/sh
#chkconfig: 2345 80 06
#description: gollum

export EUREKA=/root/gollum/jar/server-eureka-1.0.jar
export ZUUL=/root/gollum/jar/server-zuul-1.0.jar
export LAB=/root/gollum/jar/service-laboratory-1.0.jar
export EXAM=/root/gollum/jar/service-examination-1.0.jar
export CONSULT=/root/gollum/jar/service-consultation-1.0.jar
 
export EUREKA_port=8000
export ZUUL_port=8080
export LAB_port=9106
export EXAM_port=9107
export CONSULT_port=9110

export EUREKA_log=/root/gollum/jar/log/eureka.out
export ZUUL_log=/root/gollum/jar/log/zuul.out
export LAB_log=/root/gollum/jar/log/laboratory.out
export EXAM_log=/root/gollum/jar/log/examination.out
export CONSULT_log=/root/gollum/log/consultation.out

##配置文件,dev/prod
export spring_config=prod
 
case "$1" in
 
start)
	case "$2" in
		
		eureka|EUREKA)
			## 启动EUREKA
			echo "--------EUREKA 开始启动--------------"
			nohup java -jar $EUREKA --spring.profiles.active=$spring_config >$EUREKA_log 2>&1 &
			EUREKA_pid=`lsof -i:$EUREKA_port|grep "LISTEN"|awk ‘{print $2}‘`
			until [ -n "$EUREKA_pid" ]
				do
				  EUREKA_pid=`lsof -i:$EUREKA_port|grep "LISTEN"|awk ‘{print $2}‘`  
				done
			echo "EUREKA pid is $EUREKA_pid" 
			echo "--------EUREKA 启动成功--------------"
			;;
			
		zuul|ZUUL)
			## 启动ZUUL
			echo "--------开始启动ZUUL---------------"
			nohup java -jar $ZUUL --spring.profiles.active=$spring_config >$ZUUL_log 2>&1 &
			ZUUL_pid=`lsof -i:$ZUUL_port|grep "LISTEN"|awk ‘{print $2}‘` 
			until [ -n "$ZUUL_pid" ]
				do
				  ZUUL_pid=`lsof -i:$ZUUL_port|grep "LISTEN"|awk ‘{print $2}‘`  
				done
			echo "ZUUL pid is $ZUUL_pid"     
			echo "---------ZUUL 启动成功-----------"
			;;
			
		lab|LAB)
			## 启动LAB
			echo "--------开始启动LAB---------------"
			nohup java -jar $LAB --spring.profiles.active=$spring_config >$LAB_log 2>&1 &
			LAB_pid=`lsof -i:$LAB_port|grep "LISTEN"|awk ‘{print $2}‘` 
			until [ -n "$LAB_pid" ]
				do
				  LAB_pid=`lsof -i:$LAB_port|grep "LISTEN"|awk ‘{print $2}‘`  
				done
			echo "LAB pid is $LAB_pid"     
			echo "---------LAB 启动成功-----------"
			;;
		exam|EXAM)
			## 启动EXAM
			echo "--------开始启动EXAM---------------"
			nohup java -jar $EXAM --spring.profiles.active=$spring_config >$EXAM_log 2>&1 &
			EXAM_pid=`lsof -i:$EXAM_port|grep "LISTEN"|awk ‘{print $2}‘` 
			until [ -n "$EXAM_pid" ]
				do
				  EXAM_pid=`lsof -i:$EXAM_port|grep "LISTEN"|awk ‘{print $2}‘`  
				done
			echo "EXAM pid is $EXAM_pid"     
			echo "---------EXAM 启动成功-----------"
			;;
		consult|CONSULT)
			## 启动CONSULT
			echo "--------开始启动CONSULT---------------"
			nohup java -jar $CONSULT --spring.profiles.active=$spring_config >$CONSULT_log 2>&1 &
			CONSULT_pid=`lsof -i:$CONSULT_port|grep "LISTEN"|awk ‘{print $2}‘` 
			until [ -n "$CONSULT_pid" ]
				do
				  CONSULT_pid=`lsof -i:$CONSULT_port|grep "LISTEN"|awk ‘{print $2}‘`  
				done
			echo "CONSULT pid is $CONSULT_pid"     
			echo "---------CONSULT 启动成功-----------"
			;;
			
    esac
	;;
 
 stop)
	case "$2" in
		
		eureka|EUREKA)
			P_ID=`ps -ef | grep -w $EUREKA | grep -v "grep" | awk ‘{print $2}‘`
			if [ "$P_ID" == "" ]; then
				echo "===EUREKA process not exists or stop success"
			else
				kill -9 $P_ID
				echo "EUREKA killed success"
			fi
			;;
			
		zuul|ZUUL)
			P_ID=`ps -ef | grep -w $ZUUL | grep -v "grep" | awk ‘{print $2}‘`
			if [ "$P_ID" == "" ]; then
				echo "===ZUUL process not exists or stop success"
			else
				kill -9 $P_ID
				echo "ZUUL killed success"
			fi
			;;
						
		lab|LAB)
			P_ID=`ps -ef | grep -w $LAB | grep -v "grep" | awk ‘{print $2}‘`
			if [ "$P_ID" == "" ]; then
				echo "===LAB process not exists or stop success"
			else
				kill -9 $P_ID
				echo "LAB killed success"
			fi
			;;
		exam|EXAM)
			P_ID=`ps -ef | grep -w $EXAM | grep -v "grep" | awk ‘{print $2}‘`
			if [ "$P_ID" == "" ]; then
				echo "===EXAM process not exists or stop success"
			else
				kill -9 $P_ID
				echo "EXAM killed success"
			fi
			;;
		consult|CONSULT)
			P_ID=`ps -ef | grep -w $CONSULT | grep -v "grep" | awk ‘{print $2}‘`
			if [ "$P_ID" == "" ]; then
				echo "===CONSULT process not exists or stop success"
			else
				kill -9 $P_ID
				echo "CONSULT killed success"
			fi
			;;
					
	esac
	;;
 
restart)
        $0 stop $2
        sleep 2
        $0 start $2
        echo "===restart $2 success==="
        ;;   
esac	
exit 0

启动命令

#全部jar执行
启动:./gollum.sh start
停止:./gollum.sh stop
重启:./gollum.sh restart

#单个jar执行
启动:./gollum-one.sh start eureka 其他服务类似
停止:./gollum-one.sh stop eureka 其他服务类似
重启:./gollum-one.sh restart eureka  

开机启动

#文件授权:
chmod +x /etc/init.d/gollum.sh
chkconfig --list
#脚本添加到启动服务中: 
chkconfig --add  gollum.sh
#脚本启动服务中移除:
chkconfig --del  gollum.sh
#启动服务: 
chkconfig  gollum.sh on

#最后reboot重启系统即可

service gollum.sh start
service gollum.sh stop

常见问题

/bin/bash^M: 坏的解释器: 没有那个文件或目录

执行shell脚本是报错:/bin/bash^M: 坏的解释器: 没有那个文件或目录是因为该文件在windows系统上打开过,关闭后其中的空格符号和Linux的不同,导致这个报错,我们可以通过sed命令与正则的配合将文件中的空格符号替换成linux的空格

sed -i ‘s/\r$//‘ java.sh 

-bash: ./java.sh: 权限不够

chmod +7 java.sh

防火墙端口设置

# 添加指定需要开放的端口:
firewall-cmd --add-port=123/tcp --permanent
# 重载入添加的端口: 
firewall-cmd --reload
# 查询指定端口是否开启成功: 
firewall-cmd --query-port=123/tcp

Linux

上一篇:man ld.so 的翻译(转)linux动态库加载方式


下一篇:Linux适用指令三