草庐IT

PHP 在 exec() bash 脚本时挂起

我有几行代码看起来像这样......exec($this->path.'start>/dev/null2>&1&');return['status'=>'Commandexecuted'];$this->path是一个shell脚本,start是shell脚本的参数,我相信该行的其余部分应该转储任何响应,以便php脚本可以继续运行。它没有像它应该的那样工作,php成功启动了shell脚本(它启动了一个游戏服务器)但是php只是挂起,直到我使用shell关闭服务器。当我用shell关闭服务器时,它完成执行并且我收到“命令已执行”响应。我还禁用了SELinux的强制执行,以确保它不会造成干

linux - Bash shell 脚本函数给出 "find: missing argument to ` -exec'"error

我在Bashshell脚本中编写了一个函数,用于在Linux树中搜索与包含正则表达式的模式匹配的文件名,并使用颜色突出显示:functionggrep{LS_="ls--color{}|seds~./~~"[-n"$1"-a"$1"!="*"]&&NAME_="-iname$1"||NAME_=[-n"$2"]&&EXEC_="egrep-q\"$2\"\"{}\"&&$LS_&&egrep-n\"$2\"--color=always\"{}\"|seds~^B~\B~"||EXEC_=$LS_FIND_="find.-typef$NAME_-execsh-c\"$EXEC_\"\\;

linux - Bash shell 脚本函数给出 "find: missing argument to ` -exec'"error

我在Bashshell脚本中编写了一个函数,用于在Linux树中搜索与包含正则表达式的模式匹配的文件名,并使用颜色突出显示:functionggrep{LS_="ls--color{}|seds~./~~"[-n"$1"-a"$1"!="*"]&&NAME_="-iname$1"||NAME_=[-n"$2"]&&EXEC_="egrep-q\"$2\"\"{}\"&&$LS_&&egrep-n\"$2\"--color=always\"{}\"|seds~^B~\B~"||EXEC_=$LS_FIND_="find.-typef$NAME_-execsh-c\"$EXEC_\"\\;

java - Runtime.exec() 无法运行 "su - postgres -c ' pg_dump .. .'"

这是我要运行的命令:su-postgres-c"pg_dump....."备份postgres数据库。如果我现在在linuxshell中,作为root,它工作得很好。但是现在,我想从java应用程序运行它,如:Stringcmd="su-postgres-c\"pg_dump--port5432.....\""Processp=Runtime.getRuntime().exec(cmd);//readtheerrorstreamandinputstreamp.waitFor();它抛出一个错误:su:unknownoption"--port"pleasetry"su--help"tog

java - Runtime.exec() 无法运行 "su - postgres -c ' pg_dump .. .'"

这是我要运行的命令:su-postgres-c"pg_dump....."备份postgres数据库。如果我现在在linuxshell中,作为root,它工作得很好。但是现在,我想从java应用程序运行它,如:Stringcmd="su-postgres-c\"pg_dump--port5432.....\""Processp=Runtime.getRuntime().exec(cmd);//readtheerrorstreamandinputstreamp.waitFor();它抛出一个错误:su:unknownoption"--port"pleasetry"su--help"tog

PHP exec() 函数和 .history 文件

假设apache在我的服务器上运行的用户是真实用户并且有一个带有.history文件的主目录,将通过exec()运行命令导致在那个文件?例如,如果我运行exec("whoami")并以该用户身份登录并运行命令history我会在该历史记录中看到一个条目whoami命令? 最佳答案 没有。michael@MacMichi:~$php-r'exec("whoami");'michael@MacMichi:~$history|tail-n3506history|tail-n3507php-r'exec("whoami");'508hist

PHP exec() 函数和 .history 文件

假设apache在我的服务器上运行的用户是真实用户并且有一个带有.history文件的主目录,将通过exec()运行命令导致在那个文件?例如,如果我运行exec("whoami")并以该用户身份登录并运行命令history我会在该历史记录中看到一个条目whoami命令? 最佳答案 没有。michael@MacMichi:~$php-r'exec("whoami");'michael@MacMichi:~$history|tail-n3506history|tail-n3507php-r'exec("whoami");'508hist

c - 如何对位置未知的命令使用 execv?

假设我想生成一个进程并运行execv来执行类似ls的命令,那么我就是这样做的:char*constparm[]={"/usr/bin/ls","-l",NULL};if((pid=vfork())==-1)perror("forkerror");elseif(pid==0){execv("/usr/bin/ls",parm);}现在的问题是,我在这里对ls命令的位置进行了硬编码(/usr/bin/ls)。现在假设我不知道特定命令的位置并且想执行它,那么我该怎么做呢?我知道在常规shell中查找PATH变量以实现相同的目的,但如果是使用execv的C程序,我该如何实现它?

c - 如何对位置未知的命令使用 execv?

假设我想生成一个进程并运行execv来执行类似ls的命令,那么我就是这样做的:char*constparm[]={"/usr/bin/ls","-l",NULL};if((pid=vfork())==-1)perror("forkerror");elseif(pid==0){execv("/usr/bin/ls",parm);}现在的问题是,我在这里对ls命令的位置进行了硬编码(/usr/bin/ls)。现在假设我不知道特定命令的位置并且想执行它,那么我该怎么做呢?我知道在常规shell中查找PATH变量以实现相同的目的,但如果是使用execv的C程序,我该如何实现它?

php - 在返回垃圾的 php 中执行 exec ('php -v' 时出错(HTTP 响应)

我有一个共享服务器Linux,基于它我遇到了一个奇怪的问题。我正在尝试通过PHP执行以下命令,它运行正常;返回PHP安装路径/usr/bin/php。exec('whichphp');//Thisrunssoexecisnotdisabled但是我尝试使用exec('php...');执行的任何命令都无法随机返回一个包含98到114个元素的数组,几乎到处都是垃圾。我运行的命令示例是...exec('php-v');exec('php-i');exec('/usr/bin/php-v');以上都没有返回合理的东西。知道为什么php运行的任何命令都没有执行吗?下面是exec()返回给我的数