【问题标题】:Log output from scripts running in separate processes记录在不同进程中运行的脚本的输出
【发布时间】:2013-06-03 16:30:09
【问题描述】:

我正在不同数据库之间复制几个 sql 表。对于每个表,都准备了单独的脚本,其中包含 DROP..CREATE..AS SELECT.. 操作以及一些用于日志目的的 PROMPT..SELECT SYSDATE.. 操作。所有输出信息 (Table dropped, Table created, etc.) 必须收集在一个文件中。

我已经尝试过该代码:

sqlplus -S user/password/sid @CopyScript1.sql > Output.log &
sqlplus -S user/password/sid @CopyScript2.sql > Output.log &
sqlplus -S user/password/sid @CopyScript3.sql > Output.log &
wait

按照我的意愿复制表格,但日志文件一团糟:

Elapsed: 00:00:00.00
TABLE1 table creation b
Tabl
Table dropped.

Elapsed: 00:00:0
Table created.

Elapsed: 00:00:01.43

03-06-2013 19:18:45

Elapsed: 00:00:00.00
TABLE2 table creation end
end
n end

我应该改变什么以获得正确的日志?


编辑: 每个日志条目可以包含几行(SYSDATE 和 1+ 行 cmets,以及最终完成操作的时间,f.ex.:

(00:00:14)
2013-06-04 02:08
Provided example of log entry
can consist of more than 1 line

结果文件中的日志条目应按条目日期排序。

【问题讨论】:

    标签: linux shell logging sh


    【解决方案1】:

    将每个查询记录到不同的文件中,然后使用“cat *.log”将它们重新组合在一起。

    【讨论】:

    • 谢谢。我已经更新了问题。在我的情况下,简单的串联不起作用,因为必须对日志条目进行排序。 cat *.log | sort > Output.log 也不起作用,因为条目是多行的,只有一行带有日期(但我们可以假设要排序的日期总是在条目的第二行中,并且条目由空行分隔)。
    • 在这种情况下,您必须在 perl/sed/whatever 中编写一些自定义的内容。它高度依赖于文件的确切格式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    • 2018-02-26
    • 1970-01-01
    • 2020-10-13
    • 2013-10-16
    • 1970-01-01
    相关资源
    最近更新 更多