小白问个 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 &
RSA 算法从原理上说, 可以使用 private key 加密, public key 解密, 但为什么各个语言的实现都只允许 public key 加密, private …
然后今天发现 wps ,excel ,记事本等软件打开的时候,会显示水印,水印信息是 mac 地址。这个是怎么实现的?我现在还能打开注册表,有大佬指条明路吗?? 防护项目:注…
iphone 自带电池检测,是不是电池内还有芯片的原因,安卓机器有较为准确检测电池健康度的软件么? battery guru 通过充电计算健康度 root 后可以查看电池 …