linux下跑的命令如何保存log
linux下跑的命令如何保存log详细介绍
在 Linux 下保存命令执行日志(Log)可以通过多种方式实现,以下是常用方法及示例:
1. 基础输出重定向(最常用)
将命令的 标准输出(stdout) 和 错误输出(stderr) 重定向到文件,支持覆盖(>)或追加(>>)模式。
语法:
bash
命令 日志文件.txt
命令 > 错误日志.txt
命令 完整日志.txt
命令 日志.txt >
命令 日志.txt >
示例:
bash
/non_exist_dir ls.log
nginx install.log >
2. 使用 tee 命令(实时显示 + 保存日志)
tee 可以将命令输出同时打印到终端和文件,适合需要实时查看进度并保存日志的场景。
语法:
bash
命令 日志文件.txt命令 日志文件.txt
示例:
bash
https://example.com/file.tar.gz download.log
命令 > 日志文件.txt
3. 使用 nohup 后台运行并保存日志
nohup 用于让命令在后台运行(断开终端连接后不终止),并自动将输出重定向到 nohup.out,也可指定自定义日志文件。
语法:
bash
命令 日志文件.txt >
示例:
bash
./long_running_script.sh script.log >
4. 在脚本中永久重定向日志
如果需要为整个脚本或长时间运行的程序记录日志,可以在脚本开头重定向文件描述符,后续所有输出会自动写入日志。
脚本示例(
script.sh):
bash
/var/log/script.log >
"
追加模式(不覆盖旧日志):
bash
/var/log/script.log >
5. 带时间戳的日志(推荐)
在日志文件名中加入时间戳,避免文件被覆盖,方便区分不同时间的日志。
示例:
bash
命令 +.log"
backup.tar.gz /data +.log"
6. 日志轮转(长期运行场景)
对于长期生成的大日志文件,可使用 logrotate 工具按时间或大小分割日志(需配置 /etc/logrotate.conf 或自定义配置)。
简单示例(在脚本中手动分割):
bash
命令 +.log"
总结
- 临时命令:直接用
&> 日志文件或tee。 - 后台运行:搭配
nohup或&符号。 - 脚本日志:在脚本开头用
exec重定向文件描述符。 - 完整日志:始终包含错误输出(
2>&1),避免遗漏报错信息。
根据需求选择合适的方法,核心是利用 Linux 的 输入输出重定向 机制(>, >>, 2>, &>)和工具(tee, nohup)来捕获所有输出并保存到文件。