Zei*_*zar 5 javascript permission-denied k6
我正在努力学习k6,我从它的官方文档开始。我在运行文档中使用 docker 镜像和命令行尝试了示例代码。在 docker 版本中它工作正常:
zeinab@ZiZi:~$ docker run -i loadimpact/k6 run - <k6_test.js
/\ |??| /??/ /?/
/\ / \ | |_/ / / /
/ \/ \ | | / ??\
/ \ | |?\ \ | (_) |
/ __________ \ |__| \__\ \___/ .io
execution: local--------------------------------------------------] servertor
output: -
script: -
duration: -, iterations: 1
vus: 1, max: 1
time="2020-02-18T11:14:26Z" level=info msg=Running i=0 t=971.124809ms starting
...
time="2020-02-18T11:14:55Z" level=info msg=Running i=0 t=29.971104099s
time="2020-02-18T11:14:55Z" level=warning msg="Request Failed" error="Get http://test.loadimpact.com: proxyconnect tcp: dial tcp 192.168.14.109:1087: i/o timeout"
time="2020-02-18T11:14:56Z" level=info msg=Running i=0 t=30.971060995s
time="2020-02-18T11:14:56Z" level=info msg="Test finished" i=1 t=31.000143344s
data_received..............: 0 B 0 B/s
data_sent..................: 0 B 0 B/s
http_req_blocked...........: avg=0s min=0s med=0s max=0s p(90)=0s p(95)=0s
http_req_connecting........: avg=0s min=0s med=0s max=0s p(90)=0s p(95)=0s
http_req_duration..........: avg=0s min=0s med=0s max=0s p(90)=0s p(95)=0s
http_req_receiving.........: avg=0s min=0s med=0s max=0s p(90)=0s p(95)=0s
http_req_sending...........: avg=0s min=0s med=0s max=0s p(90)=0s p(95)=0s
http_req_tls_handshaking...: avg=0s min=0s med=0s max=0s p(90)=0s p(95)=0s
http_req_waiting...........: avg=0s min=0s med=0s max=0s p(90)=0s p(95)=0s
http_reqs..................: 1 0.032258/s
iteration_duration.........: avg=31s min=31s med=31s max=31s p(90)=31s p(95)=31s
iterations.................: 1 0.032258/s
vus........................: 1 min=1 max=1
vus_max....................: 1 min=1 max=1
Run Code Online (Sandbox Code Playgroud)
但是当从命令行运行时,我得到:
zeinab@ZiZi:~$ sudo k6 run ./k6_test.js
/\ |??| /??/ /?/
/\ / \ | |_/ / / /
/ \/ \ | | / ??\
/ \ | |?\ \ | (_) |
/ __________ \ |__| \__\ \___/ .io
ERRO[0000] open /home/zeinab/k6_test.js: permission denied
Run Code Online (Sandbox Code Playgroud)
编辑 1:
与当前用户一起运行时出现相同的错误:
k6 run ./k6_test.js
Run Code Online (Sandbox Code Playgroud)
编辑2:
我安装k6使用snap:
zeinab@ZiZi:~$ snap install k6
k6 v0.23.1 from Null Box (nullboxorg) installed
Run Code Online (Sandbox Code Playgroud)
鉴于您使用 snap 来安装它,这意味着 snap 内部的 k6 也无法访问您的整个文件系统(就像 docker 一样)。
我不太了解 snap,但考虑到为 snap 构建 k6 的人去年没有更新它,我建议只获取二进制文件并运行它;)。
原答案:
正如它所说:您的root用户无法打开/home/zeinab/k6_test.js,因为他们没有权限。我猜他们要么无法读取您的主目录(/home/zeinab)或文件本身。
您实际上并不需要使用sudo,因此要么删除它,要么修复脚本的权限,尽管再次使用 root 运行是不必要的,而且无论哪种方式都是不好的做法:D
附带说明一下,docker 之所以能够工作,是因为无论您运行什么 shell(可能是 bash),它都会读取文件并将其发送到 docker 进程的标准输入。所以即使docker是别名sudo docker它仍然有效。