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

如何在定时执行的Bash脚本中添加系统时间至输出文件?

给进程采集脚本添加执行时间字段

你可以通过以下方式修改脚本,给每条进程数据加上当前脚本执行的系统时间字段:

1. 重新生成修改后的script.sh

用以下命令覆盖原有的script.sh,脚本会自动处理表头并给每行数据追加采集时间:

echo -e '#!/bin/bash
COLLECT_TIME=$(date "+%Y-%m-%d %H:%M:%S")
# 仅在文件为空时输出表头
if [ ! -s output.txt ]; then
    echo "COLLECT_TIME USER         TIME COMMAND           DRS   RSS    VSZ                  STARTED" >> output.txt
fi
# 跳过ps自带表头,给每行数据加采集时间
ps -eo user,cputimes,comm,drs,rss,vsz,lstart --sort -cputimes | tail -n +2 | awk -v time="$COLLECT_TIME" '\''{print time, $0}'\'' >> output.txt' > script.sh

2. 赋予脚本执行权限(可选)

如果不想每次用sh调用脚本,可以给脚本添加执行权限:

chmod +x script.sh

3. 保持原执行命令不变

继续用原来的命令启动定时采集,24小时后自动终止:

timeout 1440m watch -n900 sh script.sh

效果示例

修改后output.txt的内容会变成这样:

COLLECT_TIME         USER         TIME COMMAND           DRS   RSS    VSZ                  STARTED
2024-05-20 14:30:00 hpnunes      4799 gnome-shell     5530046 180844 5530052 Fri Jul 29 18:05:00 2022
2024-05-20 14:30:00 hpnunes      3084 Xwayland        491848 97336 493408 Fri Jul 29 18:05:00 2022
2024-05-20 14:30:00 hpnunes      1770 Isolated Web Co 3040881 290648 3041488 Mon Aug  1 10:50:45 2022

关键说明

  • 用date "+%Y-%m-%d %H:%M:%S"生成标准化时间格式,你可以根据需求修改格式(比如换成date "+%s"生成时间戳)
  • 通过if [ ! -s output.txt ]判断文件是否为空,避免每次采集重复输出表头
  • 用tail -n +2跳过ps自带的表头,再通过awk把采集时间追加到每行数据前,确保格式统一

内容的提问来源于stack exchange,提问作者HP-Nunes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 08:45:29