我之前使用过 Lambda 函数,如果我没记错的话,我应该在/tmp.
然而,我的 Go lambda 函数似乎没有与 fs 正确交互:
exec.Command("ls -la /").Output()返回空
exec.Command("rm -rf /tmp/xxx").Run()回报fork/exec : no such file or directory
exec.Command("mkdir -p /tmp/xxx").Run()回报fork/exec : no such file or directory
真的很奇怪。它使用 go1.x 环境(因此,我猜 amazonlinux:2)
更新
我可以使用 Go os 函数访问 fs:
os.RemoveAll("/tmp/xxx")
if _, err := os.Stat("/tmp/xxx"); os.IsNotExist(err) {
if err := os.Mkdir("/tmp/xxx", os.ModePerm); err != nil {
return err
}
}
Run Code Online (Sandbox Code Playgroud)
但我确实需要 exec 之后运行(二进制命令),并在该 tmp 文件夹中写入一个文件。这种情况下的错误是相同的(没有这样的文件或目录)。即使我刚刚使用上述命令创建了该文件夹。
你很接近。您使用的方式exec.Command()还不是100%正确。请尝试以下操作:
package main
import (
"fmt"
"os"
"os/exec"
)
func main() {
o, err := exec.Command("ls", "-la", "/tmp").Output()
if err != nil {
fmt.Println(err)
os.Exit(1)
}
fmt.Printf("%s\n", o)
}
Run Code Online (Sandbox Code Playgroud)
第一个参数Command()是您要运行的程序,以下所有参数都是程序参数。
请参阅https://play.golang.org/p/WaVOU0IESmZ
| 归档时间: |
|
| 查看次数: |
718 次 |
| 最近记录: |