我创建了一个用于执行MySQL数据转储的小型Bash脚本.因为转储可能相当大,所以我将进程放在后台,然后等待错误或日志显示在文件系统中.我有以下代码:
mysqldump main_db > /loc/to/dmp/file.sql 2>/loc/to/error/log/file.log &
Run Code Online (Sandbox Code Playgroud)
问题是我得到一个大小为0的'/loc/to/error/log/file.log'文件(我认为这意味着没有真正的错误),有时当这个命令运行时,这会杀死进程,即使有没有错误.
我不确定为什么STDERR会在没有数据写入时写入文件.这是因为&后台进程吗?
重定向文件在执行shell执行脚本之前设置.
即解析了包含重定向的stdout/stderr的命令后,shell分叉打开(如果文件不存在则创建文件).将打开的文件描述符附加到文件描述符1和2(分别为stdout/err),然后执行实际命令.
| 归档时间: |
|
| 查看次数: |
363 次 |
| 最近记录: |