Using the bash shell I'm trying to either create a command for the command line or a script that will show netstat info for a given process name. Here is an example of what I'm trying to do:
I would like to be able to use xargs such that the output from the first command is used as input to grep in the second command. How would I put all this together to have one "simple" command to search for all the ports being listened to by a particular application?
If it were put in a script I would like to be able to pass in the name of the application I'm searching for so I could run the above like this:
Apparently catalina has its port as string 2 here, but most things won't. If you want something that works for catalina, great.
Here's a tip: Instead of doing 'grep -v grep', just make it so grep doesn't match itself in the first place by making one letter [c] instead of c -- matches the same string but doesn't match itself.
Also, whenever you're doing grep | grep | awk | kitchen | sink, you should just replace it all with one simple awk command.
Apparently catalina has its port as string 2 here, but most things won't.
I don't think this is specific to catalina. In my example, catalina was just an example of a program I was searching for. the output is actually coming from ps -aux. So, it looks like it would always be column 2 unless ps was configured to reorder the columns.
Quote:
Also, whenever you're doing grep | grep | awk | kitchen | sink, you should just replace it all with one simple awk command.
I'm also a newbie with awk. In my original post I mentioned that I would also like to have "catalina" be a parameter that I could pass into the script. If I wanted to do this search for some other application, say httpd for example, would there be an easy way to pass that in as a parameter to the script? I was thinking that using the form of
would make it easier to replace the parameter, "catalina" in this example, with a parameter passed into the script rather than having to make the script wrap [] around the first character of $1.
What would the appropriate awk command be to search for the passed in parameter "$1" instead of searching for "/[c]atalina/" if I don't use the grep | grep -v form?
I don't think this is specific to catalina. In my example, catalina was just an example of a program I was searching for. the output is actually coming from ps -aux. So, it looks like it would always be column 2 unless ps was configured to reorder the columns.
Oh, I thought you were somehow extracting port numbers from ps. PID's make more sense.
But if all you want is PID's, pgrep does everything in one shot without the grep -v grep problem. It's also more portable than ps aux AFAIK.
Quote:
Also, is there a way to do this with xargs?
xargs isn't applicable here; it's not a shell, it doesn't run pipe chains. Running netstat 12 times to find 12 different PID's would be silly, anyway.
Cramming everything into one line doesn't necessarily make it simpler or more efficient.
Thank you for your replies. I can see from this seemingly simple question that I have a lot to learn about shell scripting. I don't have a clue about what is happening for either of the solutions listed.
Will you explain to me what each of the commands are doing in the solutions, or refer me to a good book for shell scripting?
{ list; } is a group command, the components of list are executed one after the other, and all stdouts of the list are piped to awk, which first sees the ps output, checks $15 (may be different in your case) for your command name (I used "lxterminal" for testing) and retains $4 (PID) in TMP when found (not safe for multiple occurrences of cmd in ps!). Then, when the output of netstat is in the pipe, it looks for the PID in $9 and outputs each matching row.
Hi,
can anyone tell me in detail ?
what the following do in detail ?
I am trying to get a largest number in a list
Thanks
Tao
LARGEST=$(echo $* | xargs -n1 | sort -nr | tail -1) (3 Replies)
Hello, I need some help with xargs
$ ls
aaa bbb ccc ddd$ ls | xargs -I{} ls -la {}
-rw-rw-r--. 1 xxx xx 0 May 30 20:04 aaa
-rw-rw-r--. 1 xxx xx 0 May 30 20:04 bbb
-rw-rw-r--. 1 xxx xx 0 May 30 20:04 ccc
-rw-rw-r--. 1 xxx xx 0 May 30 20:04 dddit's possible to have output like this with... (3 Replies)
Dear all ,
any suggest on xargs to combine from (1.txt and 2.txt) to output.txt ?
thanks a lot.
1.txt
0123 BUM-5M BUM-5M 93490481 63839
0124 BUM-5M BUM-5M 112112 ... (3 Replies)
hi
Could any one please tell me the option using which we can run multiple commands using xargs
I have list of files, I want to run dos2unix and chmod at one shot on them
I tried google n searched man pages but couldnt really find the solution , please help
right now im doing this
ls... (4 Replies)
Hello there,
Let me show you a simple example of what I am trying to achieve:
1) I have an input text file with some lines:
1 a
2 b
3 c
2) And I want to run a command with these lines as arguments (+ arbitrary extra arguments). For example:
$ command "1 a" "2 b" "3 c" "bye"
I... (7 Replies)
Hi,
I have a requirement to RCP the files from remote server to local server.
Also the RCP has to run in parallel. However using 'xargs' retrives 2 file names during each loop. How do we restrict to only one file name using xargs and loop till remaining files.
I use the below code for... (2 Replies)
I discovered that GNU's xargs has a -P option to allow its processes to run in parallel. Great! Is this a GNU thing, or is it supported by other platforms as well? (4 Replies)
Hi there,
I am trying to move around 3000 files from one directory to another. The mv command is complaining from too many arguments. I tried to use the xargs command but with no luck. Could some body provide help?
Regards (4 Replies)