【问题标题】:Logging script commands and errors in linux在 linux 中记录脚本命令和错误
【发布时间】:2020-01-12 22:50:42
【问题描述】:

两部分问题, 我正在运行一个执行第二个脚本的脚本。 我之所以这样设置,是因为我读到如果我将脚本放在/etc/init.d 目录中,它将在启动时运行它。(是真是假?)

我尝试在每行末尾添加>> LoopTriggerLogging.log,但日志文件中没有任何内容

所以我有第一个script如下

#!/bin/bash

/var/www/Dev/LoopTrigger.sh

exit

这会触发以下script 运行

#!/bin/bash

while true; do
    # do some work
php /var/www/Dev/FindNearestDriverAndSendPush.php
php /var/www/Dev/ProcessCustomerPayment.php
php /var/www/Dev/ProcessDriversPayment.php
    # write to LoopTriggerLogging.log

    sleep 2                        # sleep and repeat
done

我想要的是将命令与任何错误一起记录下来。我试图阅读一些关于此的内容,但在答案以及他们试图告诉用户的内容中迷失了方向。我在这方面还是新手并且正在学习,请定义任何命令或选项。我对最佳实践方案持开放态度。

另外,放入etc/init.d 目录会告诉脚本在启动时运行吗? 有没有办法在不占用命令行的情况下运行这个脚本,因为它是一个无穷无尽的脚本?

我的最终目标是让 3 个php 文件每 2 秒执行一次,并带有某种日志记录。 我在 Cron 上做了一些阅读,但似乎它不适用于这种类型的用例。

我也看过这个:

exec > logfile 2>&1(不知道这是做什么的)

set -x 让 bash 在执行之前打印每个命令

FOO=BAR(不知道这是什么意思)

echo $FOO(不知道这是什么意思)

【问题讨论】:

    标签: php linux bash shell logging


    【解决方案1】:

    如果我将脚本放在 /etc/init.d 目录中,它将在启动时运行它 向上。(真或假)

    正确。如果您将脚本放在 init.d 中,那么该脚本将在每次启动时运行。

    我的最终目标是让 3 个 php 文件每 2 秒执行一次

    根据您的 php 脚本运行所需的时间,您正在使用大约每 2 秒运行一次的正确方式。 Crontab 在至少一分钟后运行,所以这不是一个选项。

    我尝试在每行末尾添加 >> LoopTriggerLogging.log 但日志文件中没有任何内容

    您可以在您的第一个脚本中使用/var/www/Dev/LoopTrigger.sh >> LoopTriggerLogging.log,这样无论何时运行它都会

    1. 第一次创建文件,下次添加内容。
    2. 将第二个脚本的所有日志推送到文件中。

    注意:由于日志会不断附加到单个文件中,因此该文件有时会变得非常大,因此请确保妥善处理。

    【讨论】:

    • 这种方法不会在日志文件中创建任何数据有没有办法只记录脚本中的错误?另外,如果我从“/etc/init.d”目录手动执行第一个脚本,我可以退出终端并且它仍然像启动时一样运行吗?因为它接管了我的 shell 终端
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 2020-10-07
    • 1970-01-01
    • 2015-09-03
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    相关资源
    最近更新 更多