最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

普通用戶啟動supervisor報(bào)HTTP錯誤(strace)解決分析

 更新時間:2023年07月05日 08:45:46   作者:仁揚(yáng)  
這篇文章主要為大家介紹了普通用戶啟動supervisor報(bào)HTTP錯誤strace的問題解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

報(bào)錯信息

公司的開發(fā)對生產(chǎn)環(huán)境都有普通用戶 www 的權(quán)限,采用堡壘機(jī)登錄到生產(chǎn)環(huán)境的機(jī)器。

默認(rèn) supervisor 使用 root 用戶啟動,開發(fā)沒有權(quán)限直接修改配置和操作 supervisor 管理的進(jìn)程,所以 supervisor 都采用 www 用戶啟動就解決問題了。

但是今天操作生產(chǎn)環(huán)境的時候,報(bào)的錯誤令人懵逼,SRE 同學(xué)折騰了好久,配置來配置去,搞不明白為啥 www 就是啟動不了 supervisor !

報(bào)錯信息是這樣的:

[www@**************** ~]$ supervisord -c /etc/supervisord.conf
Error: Cannot open an HTTP server: socket.error reported errno.EACCES (13)
For help, use /usr/bin/supervisord -h

翻遍谷歌、百度,找到的資料,沒有一個真的能解決了問題,焦頭爛額。

突然想起 strace 這個命令,于是乎,我改成這樣子執(zhí)行:

[www@**************** ~]$ strace supervisord -c /etc/supervisord.conf

奇跡發(fā)生了!

read(6, "\0S(\1\0\0\0N(\3\0\0\0R'\0\0\0R \0\0\0R\24\0\0\0(\1\0\0"..., 4096) = 1381
read(6, "", 4096)                       = 0
close(6)                                = 0
close(5)                                = 0
close(4)                                = 0
getpid()                                = 3656
unlink("/var/run/supervisor/supervisor.sock.3656") = -1 ENOENT (No such file or directory)
socket(AF_UNIX, SOCK_STREAM, 0)         = 4
bind(4, {sa_family=AF_UNIX, sun_path="/var/run/supervisor/supervisor.sock.3656"}, 42) = -1 EACCES (Permission denied)
unlink("/var/run/supervisor/supervisor.sock.3656") = -1 ENOENT (No such file or directory)
write(2, "Error: Cannot open an HTTP serve"..., 75Error: Cannot open an HTTP server: socket.error reported errno.EACCES (13)
) = 75
write(2, "For help, use /usr/bin/superviso"..., 38For help, use /usr/bin/supervisord -h
) = 38
close(4)                                = 0
rt_sigaction(SIGINT, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7fa06ce997e0}, {sa_handler=0x7fa06d1b0750, sa_mask=[], sa_flags=SA_RESTORER, sa_restorer=0x7fa06ce997e0}, 8) = 0
close(3)                                = 0
close(11)                               = 0
exit_group(2)                           = ?
+++ exited with 2 +++

原來是沒有權(quán)限,把 sock 文件挪到 www 用戶下,問題解決。

關(guān)于 strace 命令

如果你的服務(wù)器還沒安裝 strace,可以用下面命令安裝:

# Ubuntu / Debian
sudo apt install strace
# CentOS
yum install -y strace

如果一個進(jìn)程已經(jīng)在運(yùn)行,可以通過 PID 跟蹤程序的系統(tǒng)調(diào)用,使用 CTRL + C 中止跟蹤:

[root@**************** ~]# strace -p 16701
strace: Process 16701 attached
restart_syscall(<... resuming interrupted read ...>) = 0
sendto(8, "*2\r\n$4\r\nLLEN\r\n$52\r\nhorizon:comma"..., 73, MSG_DONTWAIT, NULL, 0) = 73
poll([{fd=8, events=POLLIN|POLLERR|POLLHUP}], 1, 60000) = 1 ([{fd=8, revents=POLLIN}])
recvfrom(8, ":0\r\n", 8192, MSG_DONTWAIT, NULL, NULL) = 4
sendto(9, "*2\r\n$4\r\nLLEN\r\n$14\r\nqueues:defaul"..., 35, MSG_DONTWAIT, NULL, 0) = 35
poll([{fd=9, events=POLLIN|POLLERR|POLLHUP}], 1, 60000) = 1 ([{fd=9, revents=POLLIN}])
recvfrom(9, ":0\r\n", 8192, MSG_DONTWAIT, NULL, NULL) = 4
sendto(8, "*3\r\n$4\r\nHGET\r\n$21\r\nhorizon:queue"..., 55, MSG_DONTWAIT, NULL, 0) = 55
poll([{fd=8, events=POLLIN|POLLERR|POLLHUP}], 1, 60000) = 1 ([{fd=8, revents=POLLIN}])
recvfrom(8, "$18\r\n1.6690604487864007\r\n", 8192, MSG_DONTWAIT, NULL, NULL) = 25
wait4(16711, 0x7ffeaafa566c, WNOHANG|WSTOPPED, NULL) = 0
select(15, [12 14], [], [], {tv_sec=0, tv_usec=0}) = 0 (Timeout)
wait4(16712, 0x7ffeaafa566c, WNOHANG|WSTOPPED, NULL) = 0
select(17, [13 16], [], [], {tv_sec=0, tv_usec=0}) = 0 (Timeout)
wait4(16713, 0x7ffeaafa566c, WNOHANG|WSTOPPED, NULL) = 0
select(19, [15 18], [], [], {tv_sec=0, tv_usec=0}) = 0 (Timeout)
sendto(8, "*14\r\n$5\r\nHMSET\r\n$54\r\nhorizon:sup"..., 500, MSG_DONTWAIT, NULL, 0) = 500
sendto(8, "*4\r\n$4\r\nZADD\r\n$19\r\nhorizon:super"..., 99, MSG_DONTWAIT, NULL, 0) = 99
sendto(8, "*3\r\n$6\r\nEXPIRE\r\n$54\r\nhorizon:sup"..., 85, MSG_DONTWAIT, NULL, 0) = 85
poll([{fd=8, events=POLLIN|POLLERR|POLLHUP}], 1, 60000) = 1 ([{fd=8, revents=POLLIN}])
recvfrom(8, "+OK\r\n:0\r\n:1\r\n", 8192, MSG_DONTWAIT, NULL, NULL) = 13
sendto(8, "*3\r\n$5\r\nSETNX\r\n$29\r\nhorizon:moni"..., 58, MSG_DONTWAIT, NULL, 0) = 58
poll([{fd=8, events=POLLIN|POLLERR|POLLHUP}], 1, 60000) = 1 ([{fd=8, revents=POLLIN}])
recvfrom(8, ":0\r\n", 8192, MSG_DONTWAIT, NULL, NULL) = 4
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
nanosleep({tv_sec=1, tv_nsec=0}, 0x7ffeaafa54a0) = 0
sendto(8, "*2\r\n$4\r\nLLEN\r\n$52\r\nhorizon:comma"..., 73, MSG_DONTWAIT, NULL, 0) = 73
poll([{fd=8, events=POLLIN|POLLERR|POLLHUP}], 1, 60000) = 1 ([{fd=8, revents=POLLIN}])
recvfrom(8, ":0\r\n", 8192, MSG_DONTWAIT, NULL, NULL) = 4
wait4(16711, 0x7ffeaafa566c, WNOHANG|WSTOPPED, NULL) = 0
select(15, [12 14], [], [], {tv_sec=0, tv_usec=0}) = 0 (Timeout)
wait4(16712, 0x7ffeaafa566c, WNOHANG|WSTOPPED, NULL) = 0
select(17, [13 16], [], [], {tv_sec=0, tv_usec=0}) = 0 (Timeout)
wait4(16713, 0x7ffeaafa566c, WNOHANG|WSTOPPED, NULL) = 0
select(19, [15 18], [], [], {tv_sec=0, tv_usec=0}) = 0 (Timeout)
sendto(8, "*14\r\n$5\r\nHMSET\r\n$54\r\nhorizon:sup"..., 500, MSG_DONTWAIT, NULL, 0) = 500
sendto(8, "*4\r\n$4\r\nZADD\r\n$19\r\nhorizon:super"..., 99, MSG_DONTWAIT, NULL, 0) = 99
sendto(8, "*3\r\n$6\r\nEXPIRE\r\n$54\r\nhorizon:sup"..., 85, MSG_DONTWAIT, NULL, 0) = 85
poll([{fd=8, events=POLLIN|POLLERR|POLLHUP}], 1, 60000) = 1 ([{fd=8, revents=POLLIN}])
recvfrom(8, "+OK\r\n:0\r\n:1\r\n", 8192, MSG_DONTWAIT, NULL, NULL) = 13
sendto(8, "*3\r\n$5\r\nSETNX\r\n$29\r\nhorizon:moni"..., 58, MSG_DONTWAIT, NULL, 0) = 58
poll([{fd=8, events=POLLIN|POLLERR|POLLHUP}], 1, 60000) = 1 ([{fd=8, revents=POLLIN}])
recvfrom(8, ":0\r\n", 8192, MSG_DONTWAIT, NULL, NULL) = 4
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
nanosleep({tv_sec=1, tv_nsec=0}, ^Cstrace: Process 16701 detached
 <detached ...>

使用 -c 參數(shù),可以得到各個系統(tǒng)調(diào)用的耗時、調(diào)用次數(shù)、錯誤數(shù):

[root@**************** ~]# strace -p 16701 -c
strace: Process 16701 attached
^Cstrace: Process 16701 detached
% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 54.00    0.000216           5        39           sendto
 11.25    0.000045           1        25           recvfrom
  9.25    0.000037           1        25           poll
  8.25    0.000033           5         6           nanosleep
  6.50    0.000026           1        21           select
  5.75    0.000023           1        21           wait4
  3.50    0.000014           1        14           rt_sigprocmask
  1.50    0.000006           0         7           rt_sigaction
  0.00    0.000000           0         1           restart_syscall
------ ----------- ----------- --------- --------- ----------------
100.00    0.000400                   159           total

使用 -tt 參數(shù),顯示時間戳(微妙),-T 參數(shù)顯示系統(tǒng)調(diào)用的耗時,合起來用效果是這樣的:

[root@**************** ~]# strace -p 16701 -tt -T
strace: Process 16701 attached
23:05:15.019519 restart_syscall(<... resuming interrupted read ...>) = 0 <0.915045>
23:05:15.934770 sendto(8, "*2\r\n$4\r\nLLEN\r\n$52\r\nhorizon:comma"..., 73, MSG_DONTWAIT, NULL, 0) = 73 <0.000080>
23:05:15.934975 poll([{fd=8, events=POLLIN|POLLERR|POLLHUP}], 1, 60000) = 1 ([{fd=8, revents=POLLIN}]) <0.000022>
23:05:15.935065 recvfrom(8, ":0\r\n", 8192, MSG_DONTWAIT, NULL, NULL) = 4 <0.000022>
23:05:15.935215 wait4(16711, 0x7ffeaafa566c, WNOHANG|WSTOPPED, NULL) = 0 <0.000023>
23:05:15.935301 select(15, [12 14], [], [], {tv_sec=0, tv_usec=0}) = 0 (Timeout) <0.000026>
23:05:15.935390 wait4(16712, 0x7ffeaafa566c, WNOHANG|WSTOPPED, NULL) = 0 <0.000018>
23:05:15.935446 select(17, [13 16], [], [], {tv_sec=0, tv_usec=0}) = 0 (Timeout) <0.000018>
23:05:15.935503 wait4(16713, 0x7ffeaafa566c, WNOHANG|WSTOPPED, NULL) = 0 <0.000023>
23:05:15.935574 select(19, [15 18], [], [], {tv_sec=0, tv_usec=0}) = 0 (Timeout) <0.000023>
23:05:15.935731 sendto(8, "*14\r\n$5\r\nHMSET\r\n$54\r\nhorizon:sup"..., 500, MSG_DONTWAIT, NULL, 0) = 500 <0.000059>
23:05:15.935848 sendto(8, "*4\r\n$4\r\nZADD\r\n$19\r\nhorizon:super"..., 99, MSG_DONTWAIT, NULL, 0) = 99 <0.000046>
23:05:15.935937 sendto(8, "*3\r\n$6\r\nEXPIRE\r\n$54\r\nhorizon:sup"..., 85, MSG_DONTWAIT, NULL, 0) = 85 <0.000041>
23:05:15.936028 poll([{fd=8, events=POLLIN|POLLERR|POLLHUP}], 1, 60000) = 1 ([{fd=8, revents=POLLIN}]) <0.000019>
23:05:15.936088 recvfrom(8, "+OK\r\n:0\r\n:1\r\n", 8192, MSG_DONTWAIT, NULL, NULL) = 13 <0.000018>
23:05:15.936278 sendto(8, "*3\r\n$5\r\nSETNX\r\n$29\r\nhorizon:moni"..., 58, MSG_DONTWAIT, NULL, 0) = 58 <0.000057>
23:05:15.936385 poll([{fd=8, events=POLLIN|POLLERR|POLLHUP}], 1, 60000) = 1 ([{fd=8, revents=POLLIN}]) <0.000019>
23:05:15.936441 recvfrom(8, ":0\r\n", 8192, MSG_DONTWAIT, NULL, NULL) = 4 <0.000017>
23:05:15.936505 rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0 <0.000017>
23:05:15.936564 rt_sigaction(SIGCHLD, NULL, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0 <0.000023>
23:05:15.936624 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 <0.000017>
23:05:15.936672 nanosleep({tv_sec=1, tv_nsec=0}, ^Cstrace: Process 16701 detached
 <detached ...>

常用的參數(shù)也就這么幾個,如果記不住,直接看幫助吧:)

以上就是普通用戶啟動 supervisor 報(bào) HTTP 錯誤(strace)的詳細(xì)內(nèi)容,更多關(guān)于啟動 supervisor 報(bào) HTTP 錯誤的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 用shell命令讀取與輸出數(shù)據(jù)的代碼

    用shell命令讀取與輸出數(shù)據(jù)的代碼

    本文為大家介紹使用shell命令進(jìn)行讀取與輸出數(shù)據(jù)的方法,其中涉及了文件輸出、重定向、管道等相關(guān)知識,有興趣的朋友可以參考下
    2013-02-02
  • Linux使用zsh提高效率的5條建議

    Linux使用zsh提高效率的5條建議

    今天小編就為大家分享一篇關(guān)于Linux使用zsh提高效率的5條建議,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • shell腳本中常見的一些特殊符號和作用詳解

    shell腳本中常見的一些特殊符號和作用詳解

    這篇文章主要介紹了shell腳本中常見的一些特殊符號和它的作用詳解,總結(jié)的很簡潔,容易看懂,需要的朋友可以參考下
    2014-06-06
  • 讓Linux下的cron以秒為單位執(zhí)行shell腳本的3種方法

    讓Linux下的cron以秒為單位執(zhí)行shell腳本的3種方法

    這篇文章主要介紹了讓Linux下的cron以秒為單位執(zhí)行shell腳本的3種方法,cron默認(rèn)只支持以分為單位執(zhí)行Shell腳本的,需要的朋友可以參考下
    2014-10-10
  • Shell中${}的多種用法小結(jié)

    Shell中${}的多種用法小結(jié)

    ${}是一種變量替換語法,它用于獲取和操作變量的值,本文就來介紹一下${}的多種用法,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • Linux Shell腳本syntax error: unexpected end of file原因及解決

    Linux Shell腳本syntax error: unexpected en

    這篇文章主要介紹了Linux Shell腳本syntax error: unexpected end of file原因及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Linux命令之systemctl用法詳解

    Linux命令之systemctl用法詳解

    Linux 服務(wù)管理兩種方式service和systemctl,systemd是Linux系統(tǒng)最新的初始化系統(tǒng)(init),作用是提高系統(tǒng)的啟動速度,盡可能啟動較少的進(jìn)程,盡可能更多進(jìn)程并發(fā)啟動,本文給大家詳細(xì)講解了Linux systemctl命令用法,需要的朋友可以參考下
    2024-03-03
  • bash shell和dash shell的區(qū)別詳解

    bash shell和dash shell的區(qū)別詳解

    本文主要介紹了bash shell和dash shell的區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • shell命令之mv的具體使用

    shell命令之mv的具體使用

    本文主要介紹了shell命令之mv的具體使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Shell時間(date)相關(guān)命令

    Shell時間(date)相關(guān)命令

    這篇文章主要介紹了Shell時間(date)相關(guān)命令,需要的朋友可以參考下
    2015-11-11

最新評論

道孚县| 会东县| 钟山县| 安康市| 安康市| 枝江市| 东城区| 新丰县| 博湖县| 临清市| 宽甸| 柳州市| 陈巴尔虎旗| 新兴县| 滨海县| 周口市| 剑河县| 西乌珠穆沁旗| 罗田县| 砚山县| 旅游| 武清区| 夏河县| 鹰潭市| 舞钢市| 松江区| 宜兰县| 达日县| 元谋县| 屏山县| 宝丰县| 沧州市| 扶绥县| 含山县| 镇江市| 勐海县| 德清县| 晋中市| 宜阳县| 城固县| 城市|