700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > linux如何配置自定义命令 [shell脚本]Linux自定义命令并启用应用

linux如何配置自定义命令 [shell脚本]Linux自定义命令并启用应用

时间:2020-08-22 10:50:22

相关推荐

linux如何配置自定义命令 [shell脚本]Linux自定义命令并启用应用

前言

之前做过一个Java Web系统,由很多的子系统组成,由尽管其子系统颇多,但是要在服务器上管理这些子系统(启动、停止、重启等)却很方便,只需要输入tt 便能看见每个应用的名称、状态等,然后输入对应的应用名+操作代码,便能进行对应的操作,这一切都源于它使用了自定义的命令,来调用对应的shell脚本或命令。正好目前我做的一个系统,还处于起步阶段,每次部署都太麻烦,所以就做了一个类似的功能。

实现这个功能主要有两步:

创建相关操作的shell脚本;

自定义命令

1. 创建Shell脚本

#!/bin/bash

export APP_PATH=/usr/local/SmartDataStack

operate=${1}

#echo "${0}"

APP_NAME="sds"

pid=$(ps -aef | grep sds- | grep -v grep | awk '{print $2}')

startSDS(){

if [ "$pid" == "" ]; then

echo -n "$APP_NAME starting: "

for f in $APP_PATH/sds*.jar; do

sudo chown root:root $f && sudo chmod 775 $f

done

if [ "$?" == 0 ]; then

sudo sh $APP_PATH/start.prod.sh

if [ "$?" -eq 0 ]; then

echo "launch done, next will copy upload directory to $APP_PATH/tmp/webapp"

sleep 10

sudo cp -R $APP_PATH/upload $APP_PATH/tmp/webapp

echo -e ""

echo "Success"

else

echo "failure"

fi

else

echo "failure, 'chown' && 'chmod failure'"

echo -e ""

exit 1

fi

else

echo "can't start SDS: SDS is running."

echo -e ""

exit 1

fi

}

stopSDS() {

if [ "$pid" == "" ]; then

echo "can't stop SDS: SDS is not running."

echo -e ""

exit 1

fi

echo -n "$APP_NAME stoping[pid: $pid]: "

# first copy upload dir

sudo cp -R $APP_PATH/tmp/webapp $APP_PATH/upload && sudo kill $pid

# sudo kill `ps -aef | grep sds- | grep -v grep | awk '{print $2}'`

if [ "$?" == 0 ]; then

sleep 5

echo "success"

else

echo "failure"

echo -e ""

exit 1

fi

}

restartSDS() {

echo "$APP_NAME restart..."

# stopSDS

# startSDS

$0 stop

$0 start

}

statusSDS() {

#echo "------------------------------------------"

echo " pid status "

echo "------------------------------"

if [ "$pid" == "" ]; then

echo "$APP_NAME $pid stoped"

else

echo "$APP_NAME $pid started"

fi

}

echo -e ""

case "$operate" in

start)

startSDS

;;

stop)

stopSDS

;;

reload|restart)

restartSDS

;;

status)

statusSDS

;;

*)

echo -e "Usage params: start|stop|status|restart|reload"

;;

esac

echo -e ""

exit 0

2. 配置别名(alias)

别名的配置可以分为两种,一种是只对自己生效,一种是对所有用户生效。

1.) 配置只对自己生效的别名

(1) 编辑~/.bashrc文件

sudo vim ~/.bashrc

(2) 加入内容

alias sds="/usr/local/sh/sds.sh"

(3) 使配置生效

source ~/.bashrc

这时候使用sds即可查看效果,如下:

$ sds

Usage params: start|stop|status|restart|reload

$ sds status

pid status ------------------------------

sds 24019 started

如果显示没有此命令的话,查看是否有~/.bash_profile 文件,这个文件会加载~/.bashrc 文件,源码如下:

# .bash_profile

# Get the aliases and functions

if [ -f ~/.bashrc ]; then

. ~/.bashrc

fi

# User specific environment and startup programs

PATH=$PATH:/root/bin:/sbin:/usr/sbin:/usr/script

export PATH

2.) 设置全局别名,对所有用户生效

上面的配置只能对当前用户有效,如果需要让所有的用户都能使用此别名,则需要使用下面的方法。

(1) 在/etc/profile.d 目录下新建文件(文件名自定义),例:

sudo vim /etc/profile.d/custom-aliases.sh

(2) 输入别名配置,例:

alias sds="/usr/local/sh/sds.sh"

(3) 保存文件

(4) 重新打开任何的terminals都可以使用这个别名了

$ sds

Usage params: start|stop|status|restart|reload

$ sds status

pid status ------------------------------

sds 24019 started

Enjoy!

参考资料

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。