lsof -i not displaying processes with opened sockets
I wrote a script based on lsof to monitor the socket in use for each process of my particular application (one socket per process). When I specify the -i option to limit the list of opened files to sockets, some processes go missing.
Let pid_list be a constant and properly formatted comma separated list of 136 processes. Why is the result sometimes less than 136?
$ lsof -p $pid_list -a -i -nP -FpcnT | grep ^p | wc -l
135
ptxrxts5:/rxnet/hermes/envp/current
$ lsof -p $pid_list -a -i -nP -FpcnT | grep ^p | wc -l
134
ptxrxts5:/rxnet/hermes/envp/current
$ lsof -p $pid_list -a -i -nP -FpcnT | grep ^p | wc -l
136
The problem can be reproduced with as few as 1 pid.
$ clear ; lsof -p 5404 -a -i -nP -FpcnT
p5404
cprocess
nsource:port->dest:port
TST=ESTABLISHED
TQR=0
TQS=0
$ clear ; lsof -p 5404 -a -i -nP -FpcnT
### OOPS!!!
$ clear ; lsof -p 5404 -a -i -nP -FpcnT
p5404
cprocess
nsource:port->dest:port
TST=ESTABLISHED
TQR=0
TQS=0
Processes run without interruption. Each process has one socket that is either in LISTEN or ESTABLISHED state. Sockets are IPv4. This is on RHEL 5.11 with lsof 4.78.
Omitting lsof option -i
will always output the correct number of processes. But that output is unusable for my purposes as I need the ip and port numbers of all processes.
Processes omitted by lsof appear to be random. They're never the same.
I suspect lsof is sensitive to something, but what?
EDIT 2016-07-26
I tried using netstat as a workaround and I encountered the same issue. The problem could be specific to my application, or some combination of what my app does and operating system constraints. Something prevents lsof/netstat from reporting properly.
linux lsof
add a comment |
I wrote a script based on lsof to monitor the socket in use for each process of my particular application (one socket per process). When I specify the -i option to limit the list of opened files to sockets, some processes go missing.
Let pid_list be a constant and properly formatted comma separated list of 136 processes. Why is the result sometimes less than 136?
$ lsof -p $pid_list -a -i -nP -FpcnT | grep ^p | wc -l
135
ptxrxts5:/rxnet/hermes/envp/current
$ lsof -p $pid_list -a -i -nP -FpcnT | grep ^p | wc -l
134
ptxrxts5:/rxnet/hermes/envp/current
$ lsof -p $pid_list -a -i -nP -FpcnT | grep ^p | wc -l
136
The problem can be reproduced with as few as 1 pid.
$ clear ; lsof -p 5404 -a -i -nP -FpcnT
p5404
cprocess
nsource:port->dest:port
TST=ESTABLISHED
TQR=0
TQS=0
$ clear ; lsof -p 5404 -a -i -nP -FpcnT
### OOPS!!!
$ clear ; lsof -p 5404 -a -i -nP -FpcnT
p5404
cprocess
nsource:port->dest:port
TST=ESTABLISHED
TQR=0
TQS=0
Processes run without interruption. Each process has one socket that is either in LISTEN or ESTABLISHED state. Sockets are IPv4. This is on RHEL 5.11 with lsof 4.78.
Omitting lsof option -i
will always output the correct number of processes. But that output is unusable for my purposes as I need the ip and port numbers of all processes.
Processes omitted by lsof appear to be random. They're never the same.
I suspect lsof is sensitive to something, but what?
EDIT 2016-07-26
I tried using netstat as a workaround and I encountered the same issue. The problem could be specific to my application, or some combination of what my app does and operating system constraints. Something prevents lsof/netstat from reporting properly.
linux lsof
1
Are they IPv4 sockets? IPv6? Show us thelsof
output for the processes that are getting omitted. Are you sure that they do have an IP socket open at the timelsof
looks at them?
– Gilles
May 9 '16 at 22:08
add a comment |
I wrote a script based on lsof to monitor the socket in use for each process of my particular application (one socket per process). When I specify the -i option to limit the list of opened files to sockets, some processes go missing.
Let pid_list be a constant and properly formatted comma separated list of 136 processes. Why is the result sometimes less than 136?
$ lsof -p $pid_list -a -i -nP -FpcnT | grep ^p | wc -l
135
ptxrxts5:/rxnet/hermes/envp/current
$ lsof -p $pid_list -a -i -nP -FpcnT | grep ^p | wc -l
134
ptxrxts5:/rxnet/hermes/envp/current
$ lsof -p $pid_list -a -i -nP -FpcnT | grep ^p | wc -l
136
The problem can be reproduced with as few as 1 pid.
$ clear ; lsof -p 5404 -a -i -nP -FpcnT
p5404
cprocess
nsource:port->dest:port
TST=ESTABLISHED
TQR=0
TQS=0
$ clear ; lsof -p 5404 -a -i -nP -FpcnT
### OOPS!!!
$ clear ; lsof -p 5404 -a -i -nP -FpcnT
p5404
cprocess
nsource:port->dest:port
TST=ESTABLISHED
TQR=0
TQS=0
Processes run without interruption. Each process has one socket that is either in LISTEN or ESTABLISHED state. Sockets are IPv4. This is on RHEL 5.11 with lsof 4.78.
Omitting lsof option -i
will always output the correct number of processes. But that output is unusable for my purposes as I need the ip and port numbers of all processes.
Processes omitted by lsof appear to be random. They're never the same.
I suspect lsof is sensitive to something, but what?
EDIT 2016-07-26
I tried using netstat as a workaround and I encountered the same issue. The problem could be specific to my application, or some combination of what my app does and operating system constraints. Something prevents lsof/netstat from reporting properly.
linux lsof
I wrote a script based on lsof to monitor the socket in use for each process of my particular application (one socket per process). When I specify the -i option to limit the list of opened files to sockets, some processes go missing.
Let pid_list be a constant and properly formatted comma separated list of 136 processes. Why is the result sometimes less than 136?
$ lsof -p $pid_list -a -i -nP -FpcnT | grep ^p | wc -l
135
ptxrxts5:/rxnet/hermes/envp/current
$ lsof -p $pid_list -a -i -nP -FpcnT | grep ^p | wc -l
134
ptxrxts5:/rxnet/hermes/envp/current
$ lsof -p $pid_list -a -i -nP -FpcnT | grep ^p | wc -l
136
The problem can be reproduced with as few as 1 pid.
$ clear ; lsof -p 5404 -a -i -nP -FpcnT
p5404
cprocess
nsource:port->dest:port
TST=ESTABLISHED
TQR=0
TQS=0
$ clear ; lsof -p 5404 -a -i -nP -FpcnT
### OOPS!!!
$ clear ; lsof -p 5404 -a -i -nP -FpcnT
p5404
cprocess
nsource:port->dest:port
TST=ESTABLISHED
TQR=0
TQS=0
Processes run without interruption. Each process has one socket that is either in LISTEN or ESTABLISHED state. Sockets are IPv4. This is on RHEL 5.11 with lsof 4.78.
Omitting lsof option -i
will always output the correct number of processes. But that output is unusable for my purposes as I need the ip and port numbers of all processes.
Processes omitted by lsof appear to be random. They're never the same.
I suspect lsof is sensitive to something, but what?
EDIT 2016-07-26
I tried using netstat as a workaround and I encountered the same issue. The problem could be specific to my application, or some combination of what my app does and operating system constraints. Something prevents lsof/netstat from reporting properly.
linux lsof
linux lsof
edited Jul 26 '16 at 15:18
Philippe A.
asked May 9 '16 at 21:37
Philippe A.Philippe A.
1165
1165
1
Are they IPv4 sockets? IPv6? Show us thelsof
output for the processes that are getting omitted. Are you sure that they do have an IP socket open at the timelsof
looks at them?
– Gilles
May 9 '16 at 22:08
add a comment |
1
Are they IPv4 sockets? IPv6? Show us thelsof
output for the processes that are getting omitted. Are you sure that they do have an IP socket open at the timelsof
looks at them?
– Gilles
May 9 '16 at 22:08
1
1
Are they IPv4 sockets? IPv6? Show us the
lsof
output for the processes that are getting omitted. Are you sure that they do have an IP socket open at the time lsof
looks at them?– Gilles
May 9 '16 at 22:08
Are they IPv4 sockets? IPv6? Show us the
lsof
output for the processes that are getting omitted. Are you sure that they do have an IP socket open at the time lsof
looks at them?– Gilles
May 9 '16 at 22:08
add a comment |
1 Answer
1
active
oldest
votes
Trying using with sudo privilege. Some processes won't show if the command is not executed with sudo privilege.
My context does not allow using root. Besides, root shouldn't be necessary as I am inspecting processes that I own.
– Philippe A.
Jul 26 '16 at 18:02
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "106"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f282123%2flsof-i-not-displaying-processes-with-opened-sockets%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
Trying using with sudo privilege. Some processes won't show if the command is not executed with sudo privilege.
My context does not allow using root. Besides, root shouldn't be necessary as I am inspecting processes that I own.
– Philippe A.
Jul 26 '16 at 18:02
add a comment |
Trying using with sudo privilege. Some processes won't show if the command is not executed with sudo privilege.
My context does not allow using root. Besides, root shouldn't be necessary as I am inspecting processes that I own.
– Philippe A.
Jul 26 '16 at 18:02
add a comment |
Trying using with sudo privilege. Some processes won't show if the command is not executed with sudo privilege.
Trying using with sudo privilege. Some processes won't show if the command is not executed with sudo privilege.
answered Jul 26 '16 at 17:32
BidyutBidyut
1317
1317
My context does not allow using root. Besides, root shouldn't be necessary as I am inspecting processes that I own.
– Philippe A.
Jul 26 '16 at 18:02
add a comment |
My context does not allow using root. Besides, root shouldn't be necessary as I am inspecting processes that I own.
– Philippe A.
Jul 26 '16 at 18:02
My context does not allow using root. Besides, root shouldn't be necessary as I am inspecting processes that I own.
– Philippe A.
Jul 26 '16 at 18:02
My context does not allow using root. Besides, root shouldn't be necessary as I am inspecting processes that I own.
– Philippe A.
Jul 26 '16 at 18:02
add a comment |
Thanks for contributing an answer to Unix & Linux Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f282123%2flsof-i-not-displaying-processes-with-opened-sockets%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
Are they IPv4 sockets? IPv6? Show us the
lsof
output for the processes that are getting omitted. Are you sure that they do have an IP socket open at the timelsof
looks at them?– Gilles
May 9 '16 at 22:08