标签: exec

php exec命令(或类似的)不等待结果

我有一个我想要运行的命令,但我不希望PHP等待结果.

<?php
echo "Starting Script";
exec('run_baby_run');
echo "Thanks, Script is running in background";
?>
Run Code Online (Sandbox Code Playgroud)

有没有可能让PHP不等待结果..即只是启动它并移动到下一个命令.

我找不到任何东西,也不确定它是否可能.我能找到的最好的是有人在一分钟内开始CRON工作.

php exec

67
推荐指数
4
解决办法
9万
查看次数

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

可以通过三个PHP函数运行外部命令

system();
exec();
shell_exec();
Run Code Online (Sandbox Code Playgroud)

但他们的区别是什么?尽管它们具体应用,但在大多数情况下,可以同样使用.我很想知道哪些是可以同样使用的首选.例如,对于解压缩文件或压缩文件夹(使用tar命令),哪一个是首选(可能从性能的角度来看)?

更新:在另一个问题中,我发现了一个非常有用的链接,描述了这些功能的不同方面.我在这里分享链接,因为其他人可能会用来更好地了解安全问题和其他方面.

php shell system exec shell-exec

64
推荐指数
1
解决办法
5万
查看次数

使用tmux进行Bash脚本以启动4-paned窗口

任何人都可以帮助解释这是怎么回事用tmux,bashexec?我正在尝试使用4窗格窗口设置tmux会话.理想情况下,我想在3个窗格中运行命令:例如Ruby Thin服务器和几个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 -t foo
Run Code Online (Sandbox Code Playgroud)

~/.bin/pfoo:

#!/bin/bash
cd ~/projects/foo
rvm use ree

# here I want to execute command1 2 3 or 4...

exec $SHELL …
Run Code Online (Sandbox Code Playgroud)

bash exec tmux

63
推荐指数
3
解决办法
6万
查看次数

为什么exec不能在带有子功能的函数中工作?

看起来你不能在具有子功能的函数中使用exec ...

任何人都知道为什么这个Python代码不起作用?我在test2的exec上遇到错误.另外,我知道exec的风格并不好,但相信我,我正在使用exec是出于正当的理由.否则我不会用它.

#!/usr/bin/env python
#

def test1():
    exec('print "hi from test1"')

test1()

def test2():
    """Test with a subfunction."""
    exec('print "hi from test2"')
    def subfunction():
        return True

test2()
Run Code Online (Sandbox Code Playgroud)

编辑:我把bug缩小到在子功能中有一个功能.它与raise关键字无关.

python exec

53
推荐指数
3
解决办法
3万
查看次数

如何从Java程序启动完全独立的进程?

我正在开发一个用Java编写的程序,对于某些操作,它使用用户配置的命令行启动外部程序.目前它使用Runtime.exec()并且不保留Process引用(启动的程序是文本编辑器或存档实用程序,因此不需要系统输入/输出/错误流).

但是这有一个小问题,因为当Java程序退出时,在退出所有启动的程序之前它并没有真正退出.

如果启动的程序完全独立于启动它们的JVM,我会更喜欢它.

目标操作系统是多个,Windows,Linux和Mac是最小的,但任何带有JVM的GUI系统都是最理想的(因此实际命令行的用户可配置性).

有谁知道如何让启动的程序完全独立于JVM执行?


编辑以回复评论

启动代码如下.代码可以启动位于特定行和列的编辑器,也可以启动存档查看器.配置的命令行中的引用值被视为ECMA-262编码,并被解码并且引号被剥离以形成所需的exec参数.

这次发射发生在美国东部时间.

static Throwable launch(String cmd, File fil, int lin, int col) throws Throwable {
    String frs[][]={
        { "$FILE$"  ,fil.getAbsolutePath().replace('\\','/') },
        { "$LINE$"  ,(lin>0 ? Integer.toString(lin) : "") },
        { "$COLUMN$",(col>0 ? Integer.toString(col) : "") },
        };
    String[] arr; // array of parsed tokens (exec(cmd) does not handle quoted values)

    cmd=TextUtil.replace(cmd,frs,true,"$$","$");
    arr=(String[])ArrayUtil.removeNulls(TextUtil.stringComponents(cmd,' ',-1,true,true,true));
    for(int xa=0; xa<arr.length; xa++) {
        if(TextUtil.isQuoted(arr[xa],true)) {
            arr[xa]=TextDecode.ecma262(TextUtil.stripQuotes(arr[xa]));
            }
        }
    log.println("Launching: "+cmd);
    Runtime.getRuntime().exec(arr);
    return null; …
Run Code Online (Sandbox Code Playgroud)

java external-process exec

50
推荐指数
3
解决办法
8万
查看次数

Exec()之后的PHP StdErr

在PHP中,我正在使用exec()执行命令,如果成功了URL则返回;

$url = exec('report');
Run Code Online (Sandbox Code Playgroud)

但是,如果出现问题,我想检查stderr.我怎么读这个流?我想使用php:// stderr,但我不知道如何使用它.

php exec stderr

49
推荐指数
5
解决办法
2万
查看次数

48
推荐指数
3
解决办法
4万
查看次数

从PHP运行Bash命令

我有一个bash脚本,我通过命令行运行:

./script.sh var1 var2
Run Code Online (Sandbox Code Playgroud)

在我调用某个php文件之后,我正在尝试执行上面的命令.

我现在拥有的是:

$output = shell_exec("./script.sh var1 var2");
echo "<pre>$output</pre>";
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我尝试过使用execsystem太,但剧本从来没有得到执行.

但是当我尝试运行shell_exec("ls");它确实有效并且$output是所有文件的列表.

我不确定这是因为我正在使用的VPS的限制还是问题是否在其他地方?

php bash exec

48
推荐指数
2
解决办法
14万
查看次数

docker-exec失败:"cd":在$ PATH中找不到可执行文件

我使用了这个命令:
docker exec compassionate_mclean cd /root/python
返回的错误是

docker-exec:执行失败:exec:"cd":在$ PATH中找不到可执行文件

请帮助我

cd exec docker

47
推荐指数
2
解决办法
4万
查看次数

PHP:为什么exec()不返回输出?

我正在编写一个PHP脚本,用于检查Linux shell命令的网络连接,ping并使用PHP调用它exec():

<?php


// Bad IP domain for testing.
$domain_bad = "lksjdflksjdf.com";

$ip_address = $domain_bad;

exec("ping -c 1 $domain_bad", $output, $return_var);

var_dump($return_var);
echo "return_var is: $return_var" . "\n";
var_dump($output);


exit;
?>
Run Code Online (Sandbox Code Playgroud)

我没有从ping获取错误消息的输出,$output这是我所期待的:

$ php try.php
ping: unknown host lksjdflksjdf.com
int(2)
return_var is: 2
array(0) {
}
Run Code Online (Sandbox Code Playgroud)

如果域是一个好的域,例如yahoo.com,那么$output在数组中有ping的输出.但如果它是一个错误,例如'ping: unknown host lksjdflksjdf.com'它没有返回到$output数组.

为什么会发生这种情况并且有更好的方法来做到这一点?

php ping exec

45
推荐指数
2
解决办法
8万
查看次数

标签 统计

exec ×10

php ×5

bash ×3

shell ×2

cd ×1

docker ×1

external-process ×1

java ×1

ping ×1

python ×1

shell-exec ×1

stderr ×1

system ×1

tmux ×1