我有一个使用不同参数从cron多次调用的bash脚本,并将它们的输出重定向到不同的日志,大致如下:
* * * * * /home/bob/bin/somescript.sh someparameters >> /home/bob/log/param1.log 2>&1
我需要我的脚本在某个变量中输入值" /home/bob/log/param1.log"在这种情况下。它也可以为logfilename而不是" param1"计算日期。目前的主要原因是为了类似目的重用相同的脚本,并且能够通过受监视的文件夹通知用户他应该在哪里查找更多信息 - 在一些警告文件中给他一个日志文件名。
如何检测输出(& 1或两者& 1和& 2)的日志?
答案 0 :(得分:2)
如果您运行的是Linux,则可以从proc文件系统中读取信息。假设您在stdout.sh.
#! /bin/bash
readlink -f /proc/$$/fd/1 >&2
以交互方式显示您的终端。
$ ./stdout.sh
/dev/pts/0
通过重定向,它显示目的地。
$ ./stdout.sh > nix
/home/ceving/nix
答案 1 :(得分:0)
在运行时/ usr / bin / lsof或/ usr / sbin / lsof给出打开的文件
lsof -p $$ -a -d 1
lsof -p $$ -a -d 2
filename1=$(lsof -p $$ -a -d 1 -F n)
filename1=${filename1#*$'\n'n}
filename2=$(lsof -p $$ -a -d 2 -F n)
filename2=${filename2#*$'\n'n}