【问题标题】:Temporary file location where i save a query out put in a shell script我在 shell 脚本中保存查询的临时文件位置
【发布时间】:2015-08-27 12:21:59
【问题描述】:

我有一个与 cron 相关的问题。 假设在一个 shell 脚本中,我正在运行一个查询并且输出被存储到一个临时文件中。该临时文件的位置是什么?以及如何在 shell 脚本本身中删除?

【问题讨论】:

  • 嗯,你当然知道或者以某种方式指出了要将输出重定向到的文件,不..?
  • $ /path/to/your/script.sh > output.txt。我想知道这个 output.txt 会保存在哪里?

标签: linux shell cron


【解决方案1】:

如果命令 cron 正在运行有输出(例如状态报告,或 错误),cron 会将输出通过电子邮件发送给在 MAILTO 变量。如果没有指定,则输出将是 邮寄给产生输出的进程的所有者。

来自here

【讨论】:

    【解决方案2】:

    output.txt 最终会出现在 cron 启动命令的目录中。不幸的是,POSIX crontab specification 似乎没有指定该目录是什么。在我系统的手册页中我也找不到任何相关内容。

    在我的系统上,cron 将使用它运行命令的用户的主目录。如果您在系统上没有找到output.txt,您可以通过在 crontab 中临时添加如下一行来将目录从 cron 中剔除:

    对于用户 crontab:

    * * * * * pwd >>/tmp/cronpwd
    

    对于系统 crontab(将 user 替换为运行原始命令的用户名):

    * * * * * user pwd >>/tmp/cronpwd
    

    然后等待一分钟,文件/tmp/cronpwd 应该会出现,其中包含 cron-commands 的当前目录的名称。不要忘记再次从 crontab 中删除多余的行!

    无论目录是什么,检查它是否真的可以被运行脚本的用户写入。如果不是,则输出将丢失并且无法恢复。

    请注意,通过指定绝对路径或在命令开头显式更改当前目录,让命令独立于当前工作目录可能是一个好主意:

    5 0 * * *        /path/to/your/script.sh > /where/it/should/go/output.txt
    5 0 * * *        cd /where/it/should/go && /path/to/your/script.sh > output.txt
    

    (该示例是用户的 crontab,而不是系统 crontab。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-27
      相关资源
      最近更新 更多