定时任务任务脚本报命令找不到错误原因分析

1.1 定时任务内环境变量和shell环境变量的区别

1.1.1 shell环境变量PATH查询用echo $PATH命令

[[email protected] /]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin shell环境变量

1.1.2 定时任务内环境变量PATH查询是把echo $PATH的命令写入脚本,再把执行结果写入文本查询结果。

[[email protected] scripts]# tailf path.log
/usr/bin:/bin 定时任务内部环境变量

可以看出定时任务内部环境变量PATH是不全的,只有/usr/bin:/bin。

1.1.3 举个ifconfig命令的例子,查询命令路径的命令是which。

[[email protected] /]# which ifconfig
/sbin/ifconfig

看到结果就知道,定时任务内环境变量PATH里并没有这个命令的路径。

所以在脚本加入ifconfig命令后会报错。

[[email protected] scripts]# tailf/server/scripts/log/ip.log
/server/scripts/ip.sh: line 1: ifconfig:command not found 命令没有找到

1.2 如何解决这类问题?

1.2.1 用which查询路径,给不在/usr/bin:/bin路径里命令加上查询后的路径。

[[email protected] scripts]# vim ip.sh
/sbin/ifconfig
date        脚本内容

date是在/bin路径下,所以不用再加路径。直接写命令即可。

[[email protected] scripts]# which date
/bin/date

1.2.2 如果脚本命令多的话,需要重新修改定时任务内环境变量PATH。

[[email protected] scripts]# vim ip.sh
exportPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
ifconfig
date         脚本内容
时间: 2024-10-21 13:36:19

定时任务任务脚本报命令找不到错误原因分析的相关文章

MySQL报列名找不到错误

import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; public class MysqlTest { /** * @param args */ public static void main(String[] args) throws Ex

IOS运行报错 "dyld: Library not loaded" 原因分析

我们的游戏IOS版在接入易接SDK后,启动出现如下错误 dyld: Library not loaded: @rpath/OnlineAHelper.framework/OnlineAHelper Referenced from: /var/mobile/Containers/Bundle/Application/35ED2A71-7F60-4A16-BA4C-ECD6493A1EE1/yzg.app/yzg Reason: no suitable image found. Did find:

maven项目中POM文件报plugins找不到错误

今天要用maven建一个项目,但是项目创建完成以后再POM文件中报错了,具体错误如下所示: 上面是什么意思呢?简单翻译就是说maven-surefire-plugin这个插件找不到,解决办法如下所示: 首先打开本地仓库,按照org\apache\maven\plugins\maven-surefire-plugin\2.12.4路径打开文件夹,发现里面只有maven-surefire-plugin-2.12.4.pom.lastUpted这样的以lastUpted结尾的文件, 这些文件全部删除掉

dos 下启动mysql时,报服务器找不到错误

当在dos下启动mysql服务时,输入  net start mysql 后报错.错误信息为:服务名无效.请键入 NET HELPMSG 2185 的解决方法. dos下找到MySQL的安装目录下的bin文件:比如我的是:C:\xampp\mysql\bin 然后输入:mysqld --install C:\xampp\mysql\bin>mysqld --install Service successfully installed. C:\xampp\mysql\bin>net start

各种操作系统裸设备dd命令,以及ora-01200错误的分析

各种操作系统裸设备dd命令 很多oracle 环境都适用的是裸设备环境,常常需要适用dd命令备份裸设备. ----------------------------------------------------------------------------------- 系统保留块如下 unix    OS Reserved Size -----   ---------------- SUN Solaris    0 HP-UX          0 Linux          0 IBM

window.open打开新窗口报错ie 位指明错误,原因是window没有加引号!

function JsMod(htmlurl,tmpWidth,tmpHeight){ htmlurl=getRandomUrl(htmlurl); var newwin = window.open(htmlurl, "window", "height=" + tmpHeight + ",width=" + tmpWidth); window.location.href = window.location.href;} function setS

拷贝项目后,总是报404找不到页面,但配置没问题

哎!之前也做部署过文件的映射,但是忽然又遇到了问题又想不到了. 发生的前提为: 我之前在eclipse下创建了一个springmvc的项目,然后将此项目拷贝了下,然后重命名了,但是其中的一些配置文件也拷贝进去了(主要是项目里的.settings目录,但是里面的原项目名没有被改掉,从而出现新项目部署后,请求总是报404找不到页面) 原因是 tomcat 中的文件 server.xml <Context docBase="BankSimulateapp" path="/Ba

MySQL执行外部sql脚本文件命令报错:unknown command &#39;\&#39;

由于编码不一致导致的 虽然大部分导出是没有问题的 但是数据表中存储包含一些脚本(富文本内容)会出现该问题,强制指定编码即可解决. mysql导入时指定编码: mysql -u root -p --default-character-set=utf8 或者在导出时后显式指定编码就不存在这个问题了: mysqldump -uroot -p --default-character-set=utf8 mydb > E://xxxx.sql MySQL执行外部sql脚本文件命令报错:unknown com

rsync定时加脚本实现本地到阿里的ftp文件同步

现在需要实现西安ftp到阿里服务器的备份 1.西安为B,阿里为A 2.阿里里面的rsync是已经安装好的,查看了是依赖gti安装的,虽然版本不一样但是不影响使用 3.在A里新建rsync配置文件 4.建连接使用的用户密码 5.到B端进行手动同步实验 6.手动没问题之后进行脚本制作,然后定时运行 接下来开始操作,进入A端服务器新建rsyncd.conf配置文件 vim /etc/rsyncd.conf 我这里已经建好了 UID = #我直接给的root用户 gie = #我直接给的root组 po