linux agent 自重启脚本

本文介绍如何在CentOS系统中创建自定义服务脚本并实现自动启动。包括脚本编写、设置权限、添加系统服务及配置自启动等步骤。
#!/bin/bash
#
# chkconfig: - 57 75
# description: test service
#!/bin/sh
JAVA_OPTS="-Duser.timezone=GMT+8 -server -Xms512m -Xmx512m -Xloggc:agent.log"

APP_LOG=/home/monitor/alert-agent/

APP_HOME=/home/monitor/alert-agent/

APP_MAIN=com.upyoo.agent.AgentServer

CLASSPATH=$APP_HOME/classes

for tradePortalJar in "$APP_HOME"/*.jar
do
   CLASSPATH="$CLASSPATH":"$tradePortalJar"
done

tradePortalPID=0
 
getTradeProtalPID(){

    javaps=`ps -ef|grep java | awk '{ if($8=="./jre/bin/java") print $2}'`
if [ -n  "$javaps" ]; then
        tradePortalPID=$javaps
else
        tradePortalPID=0
    fi
}
start() {
	getTradeProtalPID
    echo "======================================================================================"
    if [ $tradePortalPID -ne 0 ]; then
        echo "$APP_MAIN already started(PID=$tradePortalPID)"
        echo "======================================================================================"
    else
        echo -n "Starting $APP_MAIN"
        cd /home/monitor/alert-agent
         ./start.sh
        getTradeProtalPID
        if [ $tradePortalPID -ne 0 ]; then
            echo "(PID=$tradePortalPID)...[Success]"
            echo "======================================================================================"
        else
            echo "[Failed]"
            echo "======================================================================================"
        fi
    fi
echo 3 >> /tmp/sunyu.txt
}

stop() {
echo "Stopping test ..."
echo 2 >> /tmp/sunyu.txt
}

# See how we were called.
case "$1" in
  start)
start
;;
  stop)
stop
;;
  restart|force-reload)
stop
start
;;
  *)
echo $"Usage: $0 {start|stop|restart|force-reload}"
exit 2
esac

CentOS下将自定义脚本制作成系统服务自动启动,Shell/批处理代码片段分享, - 脚本分享网
http://www.sharejs.com/codes/shell/6702

1.编写自己的服务脚本
进入系统服务脚本目录:
cd /etc/rc.d/init.d/
vi test
内容如下:

#!/bin/bash
#
# chkconfig: - 57 75
# description: test service
 
start() {
echo "Starting test ..."
echo 3 >> /tmp/sunyu.txt
}
 
stop() {
echo "Stopping test ..."
echo 2 >> /tmp/sunyu.txt
}
 
# See how we were called.
case "$1" in
  start)
start
;;
  stop)
stop
;;
  restart|force-reload)
stop
start
;;
  *)
echo $"Usage: $0 {start|stop|restart|force-reload}"
exit 2
esac

要注意的是, 文件的格式要是 unix. 可以通过 VI 命令 :set ff? 查看.如果不是, 执行的时候会报错:
/bin/bash^M: bad interpreter

VI 中保存
将该脚本设置为可执行:
chmod +x test

可以看到. 启动服务的时候会输出一行字. 然后往 /tmp/sunyu.txt 中写入一个 3. 关闭时会往文件中写入一个 2 如果该文件不存在, 请先行自己在 /tmp 下新建: 
cd /tmp/
touch sunyu.txt
然后将文件设置为可写:
chmod 777 sunyu.txt

2.添加系统服务
chkconfig --add test

3.系统服务自启动
chkconfig --level 345 test on

4.测试
service test start
然后查看 /tmp/sunyu.txt 中的内容: cat /tmp/sunyu.txt
service test stop
然后再查看上面文件中的内容

重启:
reboot
再查看 /tmp/sunyu.txt 文件中的内容.如果看到变化表示服务添加成功.
此例通过后, 可在脚本中的 start stop 中做自己想做的其它事了.

### Linux脚本中安全执行敏感命令的最佳实践 在Linux环境中,执行涉及敏感信息的命令时,安全性尤为重要。以下是几种推荐的方法和最佳实践,用于确保脚本运行过程中不会泄露敏感数据或引入安全隐患。 #### 使用环境变量存储敏感信息 将敏感信息(如密码、API密钥等)存储在环境变量中是一种常见做法。这种方式可以避免直接硬编码这些信息到脚本文件中,从而减少被意外暴露的风险[^1]。 ```bash export DB_PASSWORD="securepassword" mysql -u user -p"$DB_PASSWORD" < script.sql ``` #### 避免使用管道直接传递敏感参数 当通过`wget`或其他工具下载并立即执行远程脚本时,应特别注意其来源的安全性。如果必须使用此类方式,则需验证脚本的内容后再决定是否执行[^2]。 更优的选择是先保存脚本至本地再手动审查: ```bash wget https://example.com/script.sh && less script.sh chmod +x ./script.sh && ./script.sh ``` #### 利用pinentry管理交互式输入 对于需要用户提供机密资料的情况,比如SSH私钥解锁或者GPG解密操作,建议采用`pinentry`程序来收集这类细节而不是让它们明文显示于屏幕上或是写入日志里[^4]。 例如,在配置gpg-agent时启用pinentry支持: ```ini # ~/.gnupg/gpg-agent.conf pinentry-program /usr/bin/pinentry-curses default-cache-ttl 600 max-cache-ttl 7200 ``` 重启服务使更改生效: ```bash gpgconf --kill gpg-agent ``` #### 记录活动以便审计追踪 虽然这一步骤本身并不能增强即时防护能力,但它有助于事后分析任何可疑行为的发生原因。可以通过`script`命令开启整个session记录功能[^3]。 启动新shell的同时创建log文档: ```bash script -t 2> timing.log | tee output.log ``` 完成之后停止录制: ```bash exit ``` 以上措施综合运用能够显著提升Linux环境下自动化任务处理过程中的保密水平与整体健壮度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不止鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值