如何在 Linux 中使用输入输出和错误重定向 ?

嘿嘿,你把Linux重定向的知识点总结得挺全面了。
这确实是一个有用的工具。
上次在公司做自动化脚本,靠着这个给自己省了很多麻烦。

当我第一次遇到你提到的运营商时,我很困惑。
尤其是那个2 >&1 ,一开始一直记录为1 >&2 ,但是我花了很长时间才明白它的意思:错误直接返回到标准输出。
我记得有一个特别深刻的陷阱,那就是如果你没有先创建文件 > file.txt ,直接使用 2 >&1 > file.txt 命令,很容易得到文件不存在的错误。
所以顺序很重要。

/dev/null 是一个救世主!我经常使用 make clean 2 >/dev/null 来忽略编译警告,否则终端会全是乱七八糟的字符,看着很烦人。
但有时你必须小心,不要包含重大错误,这会导致难以识别问题。

说真的,如果你熟练使用这些运算符,编写脚本会更有效率。
例如,如果要归档命令的输出和错误,只需运行 ls -l /var/log 1 >log.txt 2 >&1 ,这比编写两个单独的句子更好。
当然,有时也很费力。
例如,如果要将错误添加到单独的文件中,则可以使用命令>> output.txt 2 >> error.txt。
符号很多,很容易看出来。

总之,你总结得很好。
最重要的是练习。
多用几次,很快你就能找到方法。

crontab 结果输出到cron日志

哦,是的,是的,crontab 日志位于 /var/log/cron 中。
2 02 2 年,在一台叫深圳的服务器上,我用tail -f /var/log/cron查看。
这非常有用,您可以实时查看作业何时运行。
有时我无法理解这一点,也许我比较极端,认为日志太多了。

重定向也经常被使用。
例如,我制作了一个脚本并在某个城市的服务器上启动了它 - script.sh。
我将其所有输出放入日志文件中。
我这样做了一次,拼错了脚本路径,并且不断报告错误。
我是在查看日志文件后才发现这一点的。
我将日志文件放置在 /home/user/logs/2 02 3 / 中。
只需使用 >> 和 &1 即可保存所有内容。

有时任务没有运行,只需查看 cron 日志即可。
我完成了北京 2 02 2 年挑战赛,但它没有启动。
我查看了/var/log/cron,发现没有安排。
我想知道脚本权限是否不正确。
我使用 chmod +x 为其添加权限。
然后我发现路径是正确的。
这是一个环境变量。
我忘记在 cron 中设置 PATH。
后来我意识到我需要添加这个。
就这样,就这么决定了。

Linux 输出重定向>和>>的区别是什么?

这是一个陷阱。
不要混淆 > 和 >> 的使用。

这是一个陷阱。
不要认为一个命令可以解决所有文件重定向问题。

如果您不这样做,请先备份文件,然后执行重定向过程。

LINUX怎么把命令的执行结果追加到文件末尾_LINUX输出重定向追加方法

使用 >> 添加文件不会覆盖原始内容。

自己添加。
date >> log.txt 将时间添加到文件末尾。

使用 2 >> 进行错误输出。
ls /nonexistent 2 >> error.log 将错误添加到 error.log。

如果要将标准输出和错误发送到同一文件,请使用>>,然后使用2 >&1 运行 ping -c 2 google.com >> output.log 2 >&1
使用cron定期添加日志。
日期 >> /home/user/cron.log 每分钟显示时间戳。

将多个命令添加在一起并将它们包装在 {} 中。
{ 日期; ls /tmp; } >> 组合.log 2 >&1
使用cat log.txt查看添加了什么。
如果你想实时查看,请使用 tail -f output.log。

您必须拥有该文件的写权限。
如果该文件不存在,则会自动创建。
特殊字符按原样附加。

频繁添加小文件影响性能,所以使用logrotate来轮转日志。