Finding and stopping stray server processes
Published: Sat, Aug 28, 2021
When running servers from the terminal, it is often nice to know how to shut them down manually in case things go wrong or you lose a terminal window. To dime myself out, it's usually closing down a terminal window without stopping Browser Sync, Rails server, or Python's SimpleHTTPServer. We're all learning, right?
The easiest way to find and shut down that errant process is to examine what files are currently open. Enter the command
lsof . The command is an abbreviation of "list open files" and reports currently open files and what processes are using them.
Using by itself is not enormously helpful since the list is always quite lengthy. Since most of the time the tools I am using are server-based, I can take advantage of the
-i flag, which selects by IP, host, or port.
Below are a list of commonly used ports on my projects. Your list may differ but it would be handy to know ahead of time what ports your services work on.
- Browsersync and Eleventy use 8080
- Python simple server defaults to 8000
- Jekyll defaults to 4000
- Webpack and Ruby on Rails server defaults to 3000
When using the
-i flag, there are 4 options that can be fed in, but we only need to focus on the last one, the service and port. The following is how the
lsof command should be constructed.
lsof -i tcp:PORTNUMBER
Here it is in action, looking for a process on port 8080:
After finding the errant process, take note of its PID. Use the
kill command with the process number to stop it. There are various signals that tell how
kill how agressive it should be when stopping a process. It defaults to -15 when none are provided, which allows the process to gracefully shut down. For unruly processes, use
-9 which will kill the process.
kill 1234 #where 1234 is the PID
kill -9 1234
kill command does not print anything back onto the screen. Use the
lsof command again to confirm that the process no longer shows. If it is still running, it may be appropriate to use
I'm open to work!
- Looking for a back-end or full-stack position that will leverage my strength in researching business processes and translating them into code.
- I've worked with JavasScript, Ruby, and PHP but am game to learn other scripting languages.
- Prior to development I have 20 year military service- I have the leadership experience and know-how to complete the mission.
- Most importantly, I am all about making positive impact at organizations that see inclusivity as a strength rather than an obligation.
If you have room on your team, I'm looking for a good place to put my skills to use!