我一直在寻找,找不到明确的线索来验证我从给我的脚本中得出的结论。
因此file.txt是一个打开的文件(由文件描述符3表示),并通过记录时间戳的脚本不断添加新行。每次将新行添加到文件时,下一段是否会进入while循环?
exec 3 < /path/file.txt
while read <&3
command
command..
done
Run Code Online (Sandbox Code Playgroud)
因此,只要我不关闭文件描述符,添加到我的file.txt中的新行将始终激活while循环,对吗?
请帮我解决这个问题。谢谢
使用supervisord,如何在运行程序之前执行命令?
例如,在下面的代码中,我想在启动程序之前创建一个文件.在下面的代码中我使用tail -f/dev/null来模拟后台进程,但这可能是任何正在运行的程序,如'/ path/to/application'.我试过'&&'这似乎不起作用.要求是必须首先创建文件才能使应用程序正常工作.
[supervisord]
nodaemon=true
logfile=~/supervisord.log
[program:app]
command:touch ~a.c && tail -f /dev/null
Run Code Online (Sandbox Code Playgroud) 在阅读了关于exec builtin如何在bash中工作的解释之后,我理解它的基本功能是在不分叉的情况下替换当前进程.它似乎也用于在当前进程中重定向I/O和关闭文件描述符,这让我感到困惑.这是一些无关的额外的事情exec吗?能否在"取代现有流程"的背景下理解?如果与流程替换相结合,它是如何工作的,例如exec 3< <(my program)?
这两个命令有什么区别?
cat test.txtbash -c "cat test.txt"我已经阅读了文档,但没有任何示例来理解它。
我知道sudo bash -c 'some_command'它将以some_command与 sudo 相同的权限运行。
我对发生了什么感到困惑?它是否some_command以 sudo 的形式在 bash 中运行(与 相同sudo bash)然后切换回我的当前用户?为什么我没有像运行时那样留在 bash 实例中,并拥有 sudo 权限sudo bash?
我尝试运行man bash,它描述了该-c选项(引用如下)。但是,我正在努力弄清楚描述与我在跑步时观察到的行为之间的关系sudo bash -c 'some_command'
如果存在 -c 选项,则从第一个非选项参数 command_string 中读取命令。如果 command_string 后面有参数,则将它们分配给位置参数,从 $0 开始。