Tag: exec

需要解释Linux bash内buildexec命令的行为

从Bash参考手册我得到以下关于exec bash内build命令: 如果提供了命令,它会replaceshell而不创build新的进程。 现在我有以下bash脚本: #!/bin/bash exec ls; echo 123; exit 0 这执行,我得到这个: cleanup.sh ex1.bash file.bash file.bash~ output.log (files from the current directory) 现在,如果我有这个脚本: #!/bin/bash exec ls | cat echo 123 exit 0 我得到以下输出: cleanup.sh ex1.bash file.bash file.bash~ output.log 123 我的问题是: 如果exec被调用时它会replaceshell而不创build新的进程 ,为什么在put | cat | cat , echo 123打印,但没有它,它不是。 所以,如果有人能解释这种行为的逻辑是什么,我会很高兴。 谢谢。 编辑:@torek响应后,我更难解释的行为: 1. exec ls>out命令创buildout文件并在其中放入ls的命令结果; […]

如何在多处理器系统上产生并行subprocess?

我有一个Python脚本,我想用作另一个Python脚本的控制器。 我有一个有64个处理器的服务器,所以想要产生多达64个这个第二个Python脚本的subprocess。 子脚本被调用: $ python create_graphs.py –name=NAME NAME是像XYZ,ABC,NYU等 在我的父母控制器脚本中,我从列表中检索名称variables: my_list = [ 'XYZ', 'ABC', 'NYU' ] 所以我的问题是,什么是最好的方式来产生这些进程作为孩子? 我想把孩子的数量限制在64个,所以需要跟踪状态(如果孩子的过程已经完成了),所以我可以有效地保持整个一代的运行。 我考虑使用subprocess包,但拒绝它,因为它一次只产生一个孩子。 我终于find了多处理器软件包,但是我承认被整个线程和subprocess文档所淹没。 现在,我的脚本使用subprocess.call来一次只产生一个孩子,看起来像这样: #!/path/to/python import subprocess, multiprocessing, Queue from multiprocessing import Process my_list = [ 'XYZ', 'ABC', 'NYU' ] if __name__ == '__main__': processors = multiprocessing.cpu_count() for i in range(len(my_list)): if( i < processors ): cmd = […]

Bash脚本与tmux启动一个4窗口的窗口

任何人都可以帮忙解释一下tmux , bash和exec怎么回事? 我试图设置一个4窗格的tmux会话。 理想情况下,我想在三个窗格中运行一个命令:例如一个Ruby瘦服务器和一对Ruby守护进程。 这是我迄今为止: ~/.bin/tmux-foo : #!/bin/sh tmux new-session -d -s foo 'exec pfoo "bundle exec thin start"' tmux rename-window 'Foo' tmux select-window -t foo:0 tmux split-window -h 'exec pfoo "bundle exec compass watch"' tmux split-window -v -t 0 'exec pfoo "rake ts:start"' tmux split-window -v -t 1 'exec pfoo' tmux -2 attach-session […]

从PHP运行Python脚本

我试图从PHP运行一个Python脚本使用以下命令: exec('/usr/bin/python2.7 /srv/http/assets/py/switch.py arg1 arg2'); 但是,PHP根本不会产生任何输出。 错误报告设置为E_ALL,并且display_errors已打开。 以下是我所尝试的: 我用python2 , /usr/bin/python2和python2.7代替/usr/bin/python2.7 我也使用了相对path,而不是绝对path,也没有改变任何东西。 我尝试使用命令exec , shell_exec , system 。 但是,如果我运行 if (exec('echo TEST') == 'TEST') { echo 'exec works!'; } 它工作得很好,而shutdown now不做任何事情。 PHP有权限访问和执行文件。 编辑:感谢亚历杭德罗,我能够解决这个问题。 如果你有同样的问题,不要忘记你的networking服务器很可能/不希望以root身份运行。 尝试以您的networking服务器用户或具有相似权限的用户身份login,并尝试自行运行这些命令。

PHP中的system(),exec()和shell_exec()有什么区别?

通过三个PHP函数可以运行一个外部命令 system(); exec(); shell_exec(); 但是他们有什么不同? 尽pipe具体的应用,在大多数情况下,可以平等使用。 我很想知道哪一个是可以同样使用的首选。 例如,对于解压缩文件或压缩文件夹(使用tar命令),哪一个是首选(可能是从性能angular度来看)? 更新:另一个问题,我发现了一个非常有用的链接,描述这些function的不同方面。 我在这里分享链接,因为其他人可能会使用它来更好地理解安全问题和其他方面。

Linux系统和exec之间的区别?

system和exec系列命令有什么区别? 特别是我想知道他们中的哪一个创造了孩子的工作过程?

在C ++中使用的不同版本的exec是什么?

这些都是可以在C ++中使用的exec版本 execl execle execlp execv execve execvp 他们之间有什么区别? 你怎么知道使用哪一个?

如何使用Java的Runtime.exec()时添加超时值?

我有一个方法用来在本地主机上执行一个命令。 我想为该方法添加一个超时参数,以便如果被调用的命令没有在合理的时间内完成,该方法将返回一个错误代码。 这是迄今为止的样子,没有超时的能力: public static int executeCommandLine(final String commandLine, final boolean printOutput, final boolean printError) throws IOException, InterruptedException { Runtime runtime = Runtime.getRuntime(); Process process = runtime.exec(commandLine); if (printOutput) { BufferedReader outputReader = new BufferedReader(new InputStreamReader(process.getInputStream())); System.out.println("Output: " + outputReader.readLine()); } if (printError) { BufferedReader errorReader = new BufferedReader(new InputStreamReader(process.getErrorStream())); System.out.println("Error: " + errorReader.readLine()); } […]

如何使用msbuild获取exec任务输出

我试图通过使用msbuild exec任务得到简单的输出: <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Target Name="Test"> <Exec Command="echo test output"> <Output TaskParameter="Outputs" ItemName="Test1" /> </Exec> <Exec Command="echo test output"> <Output TaskParameter="Outputs" PropertyName="Test2" /> </Exec> <Message Text="—————————————-"/> <Message Text="@(Test1)"/> <Message Text="—————————————-"/> <Message Text="$(Test2)"/> <Message Text="—————————————-"/> </Target> </Project> 但是得到下一个输出: echo test output test output echo test output test output —————————————- —————————————- —————————————- 我怎样才能得到我的脚本输出?

为什么find -exec mv {} ./target/ +无法正常工作? (在cygwin上)

我想知道究竟是什么{} \; 和{} \+和| xargs … | xargs …做。 请澄清这些解释。 下面的3个命令运行并输出相同的结果,但第一个命令需要一点时间,格式也有点不同。 find . -type f -exec file {} \; find . -type f -exec file {} \+ find . -type f | xargs file 这是因为第一个为来自find命令的每个文件运行file命令。 所以,基本上它运行如下: file file1.txt file file2.txt 但后者2find与-exec命令运行文件命令一次像所有文件如下: file file1.txt file2.txt 然后我运行下面的命令,其中第一个运行没有问题,但第二个给出错误信息。 find . -type f -iname '*.cpp' -exec mv {} ./test/ […]