如何通过Shell脚本运行Symfony命令?
循环执行Symfony命令的Shell脚本实现
以下脚本可用于循环执行指定的Symfony命令,支持超时控制,并将执行状态(成功、超时、错误)记录到日志文件中。你只需将超时时间和完整的Symfony命令作为参数传入脚本即可。
修改后的Shell脚本
timeout_seconds=$1 # 移除第一个参数(超时时间),剩余参数作为完整的Symfony命令 shift symfony_command="$@" log_file="script.log" # 无限循环执行逻辑 while true; do # 重复执行Symfony命令,直到超时或执行失败 while timeout $timeout_seconds $symfony_command; do # 仅当命令在超时时间内成功执行时触发 echo "$(date): Symfony命令执行成功" >> $log_file done # 根据退出码判断执行状态 exit_code=$? if [ $exit_code -eq 124 ]; then echo "$(date): Symfony命令执行超时" >> $log_file else echo "$(date): Symfony命令执行出错,退出码: $exit_code" >> $log_file fi done
使用方法
在项目目录下执行脚本,第一个参数为超时时间(单位:秒),后续参数为完整的Symfony命令(包括命令的参数)。
示例:
./your_script.sh 30 symfony mycommand
该示例会以30秒为超时限制,循环执行symfony mycommand命令。
关键逻辑说明
- 参数处理:通过
shift命令移除第一个超时参数,$@获取剩余的所有参数作为完整的Symfony命令,支持带参数的Symfony命令。 - 超时控制:
timeout命令限制命令的最长执行时间,若超时会返回退出码124。 - 循环执行:内层
while循环会持续重复执行命令,直到命令执行失败或超时;外层while true保证整个脚本无限循环运行。 - 日志记录:每次执行状态都会追加到
script.log文件,包含时间戳和具体状态信息,便于后续排查问题。
内容的提问来源于stack exchange,提问作者walidtlili
相关产品推荐
相关产品推荐

