DATE=$(date +%d/%b/%Y:%H:%M)
时间: 2024-05-25 21:07:41 浏览: 15
DATE=$(date +%d/%b/%Y:%H:%M)是一个Linux命令,它的作用是将当前的日期和时间赋值给一个名为DATE的变量。其中+%d表示日期,%b表示月份的缩写,%Y表示年份,%H表示小时,%M表示分钟。这个命令在脚本中非常常用,可以方便地将当前时间作为日志或者其他文件的文件名或者内容的一部分。
相关问题
QNX_LOG_DIR="/qnxlog" TOP_DIR="$QNX_LOG_DIR/top" HOGS_DIR="$QNX_LOG_DIR/hogs" PIDIN_A_DIR="$QNX_LOG_DIR/pidin" # 创建输出目录,如果不存在 mkdir -p $TOP_DIR $HOGS_DIR $PIDIN_A_DIR # 定义函数,用来删除目录中时间最早的文件 function delete_old_files { local dir=$1 local count=$(ls $dir | wc -l) if [ $count -gt 2 ]; then local oldest_file=$(ls -t $dir | tail -1) rm $dir/$oldest_file fi } # 循环执行命令和删除旧文件 while true; do # 删除旧文件 delete_old_files $TOP_DIR delete_old_files $HOGS_DIR delete_old_files $PIDIN_A_DIR # 执行命令并将结果输出到文件中 top -b -i 1 >> $TOP_DIR/top-$(date +%Y%m%d-%H%M%S).log hogs -i 1 >> $HOGS_DIR/hogs-$(date +%Y%m%d-%H%M%S).log pidin a >> $PIDIN_A_DIR/pidin-$(date +%Y%m%d-%H%M%S).log # 等待 10 秒 sleep 10 done将已时间命名文件的方式修改为已第几次启动命名
可以尝试使用一个计数器来记录脚本启动的次数,并在文件名中使用该计数器来命名文件。具体实现可以参考以下代码:
```
QNX_LOG_DIR="/qnxlog"
TOP_DIR="$QNX_LOG_DIR/top"
HOGS_DIR="$QNX_LOG_DIR/hogs"
PIDIN_A_DIR="$QNX_LOG_DIR/pidin"
# 创建输出目录,如果不存在
mkdir -p $TOP_DIR $HOGS_DIR $PIDIN_A_DIR
# 定义函数,用来删除目录中时间最早的文件
function delete_old_files {
local dir=$1
local count=$(ls $dir | wc -l)
if [ $count -gt 2 ]; then
local oldest_file=$(ls -t $dir | tail -1)
rm $dir/$oldest_file
fi
}
# 设置计数器初始值为1
count=1
# 循环执行命令和删除旧文件
while true; do
# 删除旧文件
delete_old_files $TOP_DIR
delete_old_files $HOGS_DIR
delete_old_files $PIDIN_A_DIR
# 执行命令并将结果输出到文件中,文件名中使用计数器
top -b -i 1 >> $TOP_DIR/top-$count.log
hogs -i 1 >> $HOGS_DIR/hogs-$count.log
pidin a >> $PIDIN_A_DIR/pidin-$count.log
# 计数器自增
((count++))
# 等待 10 秒
sleep 10
done
```
这样,每次脚本启动时,计数器会自增,并将计数器的值作为文件名的一部分。例如,第一次启动时的文件名为 top-1.log,第二次启动时的文件名为 top-2.log,以此类推。
写一个shell脚本判断curl -o /dev/null -s -w %{http_code} http://192.168.0.173/riskWeb/secureBaseApp/tenant/tenantByUser的返回值是否等于200,等于的话,输出$(date "+%Y-%m-%d_%H:%M:%S"), cyb-secureBase" is running",如果不等于去判断pid=`ps -ef | grep /app/service/cyb-secureBase/app.jar | grep -v grep | awk '{print $2}'是否有值输出,有的话echo $(date "+%Y-%m-%d_%H:%M:%S"), cyb-secureBase" is running",没有执行nohup java -Xms256m -Xmx1024m -Xmn256m -Dfile.encoding=utf-8 -jar /app/service/cyb-secureBase/app.jar > app.log 2>&1 &
可以参考下面的Shell脚本来实现你的需求:
```shell
#!/bin/bash
# 发送GET请求,并获取返回状态码
response_code=$(curl -o /dev/null -s -w "%{http_code}" http://192.168.0.173/riskWeb/secureBaseApp/tenant/tenantByUser)
# 判断返回状态码是否等于200
if [ $response_code -eq 200 ]; then
echo "$(date "+%Y-%m-%d_%H:%M:%S"), cyb-secureBase is running"
else
# 判断进程是否存在
pid=$(ps -ef | grep /app/service/cyb-secureBase/app.jar | grep -v grep | awk '{print $2}')
if [ -n "$pid" ]; then
echo "$(date "+%Y-%m-%d_%H:%M:%S"), cyb-secureBase is running"
else
nohup java -Xms256m -Xmx1024m -Xmn256m -Dfile.encoding=utf-8 -jar /app/service/cyb-secureBase/app.jar > app.log 2>&1 &
fi
fi
```
将以上代码保存为脚本文件(比如`check_service.sh`),然后通过`chmod +x check_service.sh`添加执行权限。运行脚本`./check_service.sh`即可完成判断和执行操作。