Linux中执行一个Sheel脚本
一:编写一个重启Java服务的.sh脚本
-
Windows中创建一个restart.sh文件
-
将一下脚本内容copy中restart.sh文件中
#!/bin/bash JAR_NAME="cloud.jar" LOG_FILE="restart.log" # 进入目录 cd /opt/server/cloudRecord/ # 检查进程是否正在运行 is_process_running() { local process_name=$1 if pgrep -f "$process_name" >/dev/null; then return 0 # 进程正在运行 else return 1 # 进程未运行 fi } # 终止进程 kill_process() { local process_name=$1 echo "[$(date +'%Y-%m-%d %H:%M:%S')] 终止进程 $process_name" >>$LOG_FILE pkill -f "$process_name" sleep 5s # 等待5秒钟确保进程已经终止 } # 重启Jar文件 restart_jar() { echo "[$(date +'%Y-%m-%d %H:%M:%S')] 正在重启 $JAR_NAME" >>$LOG_FILE java -jar $JAR_NAME >>$LOG_FILE & echo "[$(date +'%Y-%m-%d %H:%M:%S')] $JAR_NAME 重启完成" >>$LOG_FILE } # 检查并重启 if is_process_running $JAR_NAME; then kill_process $JAR_NAME fi restart_jar
-
将脚本上传到Linux中的目录下面
-
脚本说明:
1.在脚本开头使用#!/bin/bash指定解释器为Bash。 2.确保将该脚本保存为可执行文件,可以通过chmod +x restart.sh命令为脚本添加执行权限。 要执行这个脚本,在终端中导航到包含脚本的目录,然后运行./restart.sh命令即可。
-
异常问题:
直接上传到linux当中执行,报错:-bash: ./test.sh: /bin/bash^M: bad interpreter: No such file or directory
解决方法:
解决方式: 错误原因之一很有可能是你的脚本文件是DOS格式的, 即每一行的行尾以\r\n来标识, 其ASCII码分别是0x0D, 0x0A. 1.vim test.sh中, 2.执行set ff 命令,可以看到当前文件的格式类型 3.强制将dos类型转为unix 4.执行set ff=unix 5.wq保存重新执行即可 还有一种方式可以用:dos2unix test.sh 命令转换编码;
二:配置Liunx重启后自动执行某个命令
1、crontab -e命令
crontab -e命令用于编辑当前用户的cron作业。
当你运行crontab -e命令时,会打开一个文本编辑器(通常是vi或nano),用于编辑cron作业的计划任务列表。每个用户都有一个单独的cron表,可以用来设置定期执行的任务。
在编辑器中,你可以按照cron的语法添加、修改或删除作业。每一行代表一个作业,包含了cron时间表达式和要执行的命令。
以下是一个示例的crontab文件:
# 每天凌晨2点执行备份脚本
0 2 * * * /path/to/backup.sh
# 每周日晚上10点清理临时文件
0 22 * * 7 /path/to/cleanup.sh
# 每小时运行自动更新任务
0 * * * * /path/to/update.sh
保存并退出编辑器后,cron作业将根据指定的时间表自动运行。
注意:在编辑crontab文件之前,请确保你具有适当的权限,并且知道如何使用所选的文本编辑器。如果不确定如何编辑cron作业,请参考编辑器的相关文档或使用crontab命令的帮助页(man crontab)。
2、步骤方法:
1.输入:crontab -e
2.将
@reboot sleep 60 && sh /opt/server/cloudRecord/start.sh
加进任务列表中,此命令代表:意味着在服务器重新启动后,等待60秒后执行/opt/server/cloudRecord/start.sh脚本
3.wq保存
4.重启服务器命令:sudo shutdown -r now
5.重启后重新验证服务已经自动重启成功
如果在服务器重启后没有自动启动脚本,请检查以下几个方面:
脚本路径和文件权限:确保/opt/server/cloudRecord/start.sh脚本的路径和文件名正确,并且具有执行权限。你可以使用
ls -l /opt/server/cloudRecord/start.sh命令来检查文件权限。
crontab配置是否正确:使用crontab -e命令打开cron表进行编辑,并确认以下内容是否正确:
@reboot sleep 60 && sh /opt/server/cloudRecord/start.sh
保存并退出编辑器。
系统日志:查看系统日志文件(如/var/log/syslog、/var/log/messages等)以获取与cron作业相关的错误消息。这些日志文件可能包含有关任何错误或警告的线索。
手动测试脚本:尝试手动执行脚本以确定是否存在任何错误。在终端中运行以下命令来测试脚本:
sh /opt/server/cloudRecord/start.sh
如果脚本能够正常运行,但在cron作业中无法正常工作,则可能需要进行其他调试。
检查cron服务状态:确保cron服务正在运行。使用以下命令检查cron服务状态:
service cron status
如果cron服务未启动,请使用以下命令启动它:
service cron start