Cha*_*ews 4 deployment init.d go stat
我有一个脚本,用于使用“os/exec”包进行部署。我使用的命令之一如下:
cpInit = exec.Command("cp", "initScripts/nginx", "/etc/init.d/nginx")
Run Code Online (Sandbox Code Playgroud)
另一个:
startNginx = exec.Command("/etc/init.d/nginx", "start")
Run Code Online (Sandbox Code Playgroud)
最初我使用 运行第一个命令err := cpInit.Run(),但后来当我运行第二个命令时出现错误:
exec: "/etc/init.d/nginx": stat /etc/init.d/nginx: no such file or directory
Run Code Online (Sandbox Code Playgroud)
但是当程序退出/etc/init.d/nginx时,所以我想也许第一个命令没有完成(即使Run()等到命令返回)。我更改Run()为Start()并且Wait()只是为了得到相同的结果。谁能告诉我为什么第二个命令找不到该文件?
当您运行时,exec.Command(...)它会立即检查文件是否存在,但必须将错误推迟到您调用 时Run(),因为该Command()调用不会返回错误。
请参阅此处的定义Command:http://golang.org/src/pkg/os/exec/exec.go ?s=3410:3455#L99
它调用LookPath(...)此处定义:http://golang.org/src/pkg/os/exec/lp_unix.go ?s=902:944#L23
Command您需要在知道文件存在后进行初始化- 在Run()调用复制命令后。
| 归档时间: |
|
| 查看次数: |
3735 次 |
| 最近记录: |