我刚刚创建了一个每分钟运行一次的小 shell 脚本。
发生的事情是它开始淹没我的mail
。
$ crontab -l
* * * * * /home/user/bin/test 2>&1 >/dev/null
我将重定向更改为>/dev/null 2>&1
,然后它就停止了。
我认为2>&1 >/dev/null
和 >/dev/null 2>&1
至少在 shell 中是相等的......现在我犹豫了,它们(相等)吗?这只是 CRON 以这种方式编程的?
答案1
这两个命令不一样。
1>stdout filename
必须位于command
和之间2>&1
$ command 1> stdoutput_filename 2>&1
2>
=> 重定向 stderr,&1
=> 意味着stdoutput_filename
.
$ command 2>&1 > /dev/null => &1 does not mean /dev/null
例子
$ ls issue issue.net nofile 2>&1 > /tmp/testfile
ls: cannot access nofile: No such file or directory
$ cat /tmp/testfile
issue
issue.net
$ ls issue issue.net nofile 1> /tmp/testfile 2>&1
$ cat /tmp/testfile
ls: cannot access nofile: No such file or directory
issue
issue.net