我有一个部署脚本,我想在其中清除CDN的缓存。当我在服务器上运行脚本时,一切都很好,但当我SSH进入并仅运行该文件时(即,没有真正进入服务器,cd
进入目录并运行它(,它会失败,并表示找不到我的doctl
命令这似乎只是这个程序在ssh上的问题,运行systemctl-help可以正常工作
请注意,我已经使用sudo snap install doctl
安装了Digital Ocean的doctl
,它就在那里。
这是.sh
文件(减去注释(:
#!/bin/sh
doctl compute cdn flush [MYID] --files [*] # static cache
所以我不确定问题出在哪里。有人知道吗?
同样,如果我进入服务器并运行文件,一切都会正常,但我使用的SSH命令会返回错误:
ssh root@123.45.678.999 "/deploy/clear_digital_ocean_cache.sh"
这就是错误。
/deploy/clear_digital_ocean_cache.sh: 10: doctl: not found
一个解决方案是将命令更改为.sh
文件中的绝对路径,如下所示:
#!/bin/sh
/snap/bin/doctl compute cdn flush [MYID] --files [*] # static cache
我意识到我可以用ssh
(如systemctl
(运行我的用户命令,所以它要么改变doctl
的位置(即在用户仓中(,要么确保使用在命令前面添加/snap/bin/
的绝对路径来调用命令。