因执行nohup而产生的Bad file descriptor 和 Warning: "Error reading character from command line" 错误解决

nohup运行matlab 命令产生了Bad file descriptor 和 Warning: “Error reading character from command line” 的错误
错误原因是nohup下执行matlab的文件的命令格式错误;
原输入为:

nohup matlab -nodesktop -nosplash -nodisplay -r  main >log.txt 2>&1   &

以上命令的意思是,服务器后台运行main.m文件,对于一般情况下,执行没有问题,当main.m文件中涉及一些文件的读取及保存操作时会输出Bad file descriptor 和 Warning: “Error reading character from command line” 的错误。

把命令改为:

nohup matlab -nodesktop -nosplash -nodisplay < main.m >log.txt 2>&1   &

问题得到解决。
解释一下:“>log.txt” 指把输出的内容重定向到log.txt中,2>&1 的意思是把错误信息也输入到log.txt中,2指的是标准输入输出错误(stderr),1指的是标准输出(stdout),2>&1意思是2等同于1输出,最后的&是后台运行的意思,与nohup命令合在一起使用。

`nohup` 是一个命令行工具,在 Linux 和 Unix 系统上运行程序而不受终端会话退出的影响。当你在后台启动一个程序并挂起它,`nohup` 将确保该进程继续运行,即使你关闭了终端窗口。运行 `nohup` 命令时,程序的所有标准输出、错误输出都将被重定向到名为 `nohup.out` 的文件中。 然而,当出现 `-bash: nohup:: command not found` 错误信息时,通常意味着当前环境下 `nohup` 命令不可用。这可能是由以下几个原因造成的: 1. **未安装 `nohup`**:确保你的系统已经安装了必要的包来支持 `nohup`。这通常包括 GNU 工具集,可以在某些发行版上通过包管理器(如 apt 或 yum)安装。 - 对于 Debian/Ubuntu 用户: ```bash sudo apt-get install util-linux ``` - 对于 Red Hat/CentOS 用户: ```bash sudo yum install sysv-rc-conf ``` 2. **环境变量问题**:有时环境变量可能导致 `nohup` 可见性的问题。尝试将 `nohup` 添加到你的 shell 初始化脚本(如 `.bashrc`, `.zshrc`),然后重启终端会话以应用更改。 3. **路径问题**:检查你的 PATH 环境变量是否包含了包含 `nohup` 所在目录的位置。如果不在 PATH 中,你可以手动指定完整路径来运行 `nohup`,例如: ```bash /usr/bin/nohup your_program > nohup_output.txt & ``` 为了帮助理解,下面是一个使用 `nohup` 运行后台程序的例子,并同时创建输出文件的情况: ```bash nohup your_program > nohup_output.txt & ``` 在这个例子中,`your_program` 是你要运行的程序名称,`nohup_output.txt` 是存储所有输出和错误的日志文件。使用 `&` 符号可以将命令放入后台执行。 --- 相关问题 --- 1. `nohup` 是否支持并发运行多个任务? 2. 使用 `nohup` 后如何停止正在运行的后台程序? 3. `nohup` 是否适用于所有的程序?
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值