命令在控制台中能正常执行但在shell脚本中却无法执行?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了命令在控制台中能正常执行但在shell脚本中却无法执行?相关的知识,希望对你有一定的参考价值。

是ffmpeg命令,版本为4.1.6。
我在控制台中启动ffmpeg命令,其执行就正常不会僵住。
但如果我用脚本启动ffmpeg命令,其执行就会僵住不会继续执行!
怎么会有这么怪的事,我猜是ffmpeg汇编代码与shell脚本不兼容,但shell的兼容性又是何等强!
我是这样启动脚本的: user$ ./sh.sh&
启动脚本后我查看了ffmpeg进程,进程是已经启动了的,只是其运行会一直僵住不继续执行。

没遇到过,一般我会先检查下权限,比如chmod 查看你的权限。
查看脚本文件是dos格式还是unix格式
你是在用虚拟机吗?你的文件安装目录,检查 /etc/fstab 文件分区文件
另外《Linux就该这么学》中有个Linux命令大全可以查询命令
参考技术A 最前面加一个nohup 试一试?

用于发送邮件的 php 脚本在通过浏览器执行时不起作用,但在从命令行执行时工作正常

【中文标题】用于发送邮件的 php 脚本在通过浏览器执行时不起作用,但在从命令行执行时工作正常【英文标题】:php script for sending mail wont work when executed via browser but work fine when executed from command line 【发布时间】:2013-10-29 14:36:25 【问题描述】:

我写了一个小的 PHP 脚本:

<?php
$phpPath = shell_exec("which php");

print "$phpPath\n";

$uid =  posix_getuid();
$userinfo = posix_getpwuid($uid);
print_r($userinfo );
print "\n";


    $to = "my_user_name@my_company_mail.com";
    $subject = "Test mail";
    $message = "Hello! This is a simple email message.";
    $from = "do-not-reply@akamai.com";
    $headers = "From:" . $from;

    $res = mail($to,$subject,$message,$headers);

    print_r(error_get_last());
    if($res)
    echo "Mail Sent.\n";
    else
    echo "Mail was'nt Sent\n";

    
?>

让我抓狂的是,当我从命令行执行此脚本时,它运行良好: /usr/bin/php

数组 ( [名称] => 守护进程 [密码] => x [uid] => 1 [gid] => 1 [gecos] => 守护进程 [目录] => /usr/sbin [外壳] => /bin/sh )

邮件已发送。

但是当我从远程浏览器执行它时,我得到的是:

/usr/bin/php

数组 ( [名称] => 守护进程 [密码] => x [uid] => 1 [gid] => 1 [gecos] => 守护进程 [目录] => /usr/sbin [外壳] => /bin/sh )

邮件未发送

有什么想法吗? 提前 10 倍 :)

【问题讨论】:

【参考方案1】:

命令行PHP和PHP不使用相同的php.ini,请检查它们之间是否有区别。

More information on php.ini here

Related question on SO here

【讨论】:

我已经将cli php.ini 复制到lampp 目录,没有任何变化,所有的邮件配置都一样...

以上是关于命令在控制台中能正常执行但在shell脚本中却无法执行?的主要内容,如果未能解决你的问题,请参考以下文章

用于发送邮件的 php 脚本在通过浏览器执行时不起作用,但在从命令行执行时工作正常

远程(jenkins)调用shell 不能正常结束

某些选项卡字符在shell脚本中不匹配,但在命令行上执行

linux脚本运行后把脚本删了会怎么办

一天一坑系列SpringCloud微服务项目本地可以正常启动,但在Flink中却无法启动,莫名其妙????

shell 在脚本中执行了source /etc/profile 不生效