You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编写shell脚本时如何记录执行人、执行时间及执行命令到日志文件

调整方案

你需要调整日志时间格式、补全日志拼接内容,同时将日志记录逻辑改为执行脚本时自动触发,不用单独调用log参数即可完成日志写入,修改要点如下:

  • 脚本开头先定义必要的全局变量,避免logfile、submitfolder未定义报错
  • 修改date命令的格式,匹配你需要的「日/月/年 - 时:分」结构
  • 用$0获取当前脚本名,$*获取所有传入参数,拼接出完整的执行命令
  • 把日志写入逻辑提到case判断之前,只要脚本执行就自动写日志,覆盖所有操作场景
#!/bin/bash
# 全局变量定义,路径可根据实际需求修改
submitfolder="./submit_dir"
logfile="./log.txt"

help() {
    echo "$1 syntax is $1 <option>"
    echo ""
    echo "where the option is one of the following"
    echo " -l -- to print all file u already summited";
    echo "log -- to log"
}

list() {
    ls -l $submitfolder; 
}

# 调整后的日志写入函数
write_log() {
    NOW=$(date '+%d/%m/%Y - %H:%M')
    # 按需求拼接日志内容,示例为你给出的格式,需要加执行人可改为 "$NOW - $USER - $0 $*"
    echo "$NOW - $0 $*" >> $logfile
}

# 执行业务逻辑前先写入日志,覆盖所有执行场景
write_log $@

case $1
in
    l | -l) list $@;;
    log) echo "日志已记录";;
    help | -help | --help) help $@;;
    *) input $@;; # 注意此处input函数未给出定义,需自行补全避免报错
esac

如果你需要把执行人字段明确放到日志里,只需要修改日志写入行的拼接规则即可,调整后日志格式会同时包含时间、执行人、执行命令三个你需要的字段。

内容的提问来源于stack exchange,提问作者UnbutuisFree

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 22:45:03