小白问个 crontab 定时任务执行的问题
写了个 sh 内容如下
#!/bin/bash
cd /srv/FileServerWeb
nohup ./FileServerWeb > /dev/null 2>&1 &
在 ssh 进入目录下执行./xxx.sh 可以执行成功 但是放到 crontab 定时里,却执行不成功,是我哪里写的有问题吗,请大佬指正,十分感谢
crontab 定时格式如下
/srv/FileServerWeb/xxx.sh
绝对路径
大佬能举个例子不,感谢
把路径写完就是了crontab 执行的适合环境和用户自己自己执行时不一样
就是没有搞明白这个问题,不知道该怎么写了
请问下有没有其他的定时方式达到用户自己执行的效果,感谢
如果你的脚本依赖于相对路径, 那就在脚本入口添加 cd 命令如#!/bin/env bashset -ecd $WORING_DIRECTORY......
然后在 crontab 中使用绝对路径调用启动脚本
可以选择 systemd timer 比较强大/灵活
好的,感谢解答,我去尝试下
x x x x x /bin/bash xxx.sh
这样写的话 ,请问路径不用写的吗
同学,这个问题是这样的,比如你的 xxx.sh 脚本里面有这样的话ls cat xxx反正就是命令,那 shell 是如何去找这些命令的呢?答案是 PATH 变量,你可以 echo $PATH 看一下里面的路径一个用户登录系统的时候一般 PATH 变量都是系统给你初始化好了,所以你可以直接敲 ls,而不是/bin/ls但是 crontab 里面是没人帮你设置 PATH 变量的,所以会出现命令找不到的情况所以一般做法是在 xxx.sh 开头会写上export PATH= balbablabss
感谢解答,让我明白他的运行方式,刚接触脚本和定时有些定时脚本就能执行,有些不行就很纳闷,感谢,那请问下,/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/.dotnet/tools:/root/.dotnet/tools/:/root/bin 按照您的回复我查询了下变量,请问下如果我要执行问题中的脚本,我是需要添加变量,还是引入变量,小白问题勿怪哈,能帮忙写下吗,我能参考学习起来可能更快,感谢
变量的意思,我拿宝塔面板来理解的话,是不是说输入 bt 就会有菜单出现,也是安装时写入的变量吧,定义了 bt 的路径,意思也就是说在.sh 里我也要给它相应的变量路径,能这么理解吗
#13 你一个宝塔面板启动的时候会继承当前进程里面的环境变量,当然也包括了 PATH 变量程序依赖 PATH 变量去寻找对应的命令
这种问题感觉特别适合 GPT 回答。很多类似问题我也是找 GPT ,挺方便的,推荐下和 GPT 结对开发。
假设所有环境变量写在/etc/profile ,可以在 crontab 里 source 执行。0 1 * source /etc/profile;/bin/bash /path/xx.sh > /dev/null 2>&1 &
确实,不过我发现这个执行文件也需要配置环境
感谢,都没你这个回复直观
首先你这个假设就不对其次 profile 是为 login shell 提供环境的。non login 不应该用这个
作为一名非专业运维,一般我是单独给一个目录放 crontab 的文件如 /opt/shell/xxx.sh在 xxx.sh 里头只有一个原则,所有路径要写全,比如#!/bin/bash cd /srv/FileServerWeb nohup ./FileServerWeb > /dev/null 2>&1 &改写成#!/bin/bashpushd /path/to/your-service-folder/./xxx.sh > /dev/null 2>&1 &
不考虑项目历史因素,仅从自己最理想的情况下选择技术栈,大家更愿意用哪些? 在需要支持主流平台( iOS 、Android 、macOS 、Windows 、Linux )的情况…
一行 sql 也没写过不知道为啥要用这玩意 blob tree grep awk 各种 pipe 倒是一点不怵 我感受不到任何 crud 比 git 更好用的(个人感受 git…
很早以前就想写一篇和面试相关的文章了,今天在网络上看到一篇关于如何去面试程序员的英文文章,发现其中有很多和我共鸣的东西,所以仿照其标题通过自己的经历写下了这篇文章。 工作这么多…