Useful Unix Commands for Debugging
This is my list of commands found useful while debugging issues in logs, servers, process, etc., With regard to the list, will share the commands which I use in the real world scenarios..
lsof
Used to get the list of “open files” in linux and all the processes that opened them. I find them useful to search / find the processes that are listening on a given Port.
lsof -i tcp:8443
This will give the Process ID, service name which listens on the port (8443) and much more.. Particularly useful to debug different services running on the same server.
find
Useful to find files on various search attributes like name & type.
find . -name "*.xml"
This above sample command will find all files which ends with .xml notation.
netstat
Useful to list out all the network socket connections on a system.
netstat -at
I find this very useful to find all the TCP port connections that are open.
grep
Very useful in searching strings in log files
grep -r "<string>"
This is recursively find the string in all the files that are present in the present location.
sed
Useful in replacing text strings in a given file.
sed 's/localhost/server.com' server.log
The above command will replace the word “localhost” with “server.com” for all the matches.
xargs
This command is like a data pipe. Reads the data from input and passes it to the following command.
find . -name "*.xml" | xargs grep "linux"
In the above example, find utility finds all the files with .xml extension and list the files. xargs utility reads them and pass it to grep utility. Finally grep searches the given text “linux” in the list of files and only outputs the files which contains the search string in their content.
curl
This is one of the powerful utility and most commonly used. In the world of APIs, we would often come across cases to quickly invoke a service to examine the response or API connectivity, etc.,
curl http://server.com/getinfo
Using the following command we can HTTP POST request.. Much more powerful options are available to play with HTTP header values, content types, proxy options, etc., explore…
curl -X POST http://xyz.com/user
ssh/scp
Want to quickly copy an artifact or a log file from one node to another, without downloading to your host system.
scp <file_name> <username>@<destination-host>:<folder>
The above command will copy the local file from Server A to the remote system in the destination folder given.
Happy Coding..!!