What's the difference between kill and taskkill? - process

I'm on a Windows 7 machine using Cygwin.
There is a process listening on port 9090 that I wanted to kill.
First, I ran netstat -ao | grep 9090 to find out its PID 19892. Then I want to kill it.
$ netstat -ao | grep 9090
Proto Local Address Foreign Address State PID
TCP 0.0.0.0:9090 yyyyyyyyyy:0 LISTENING 19892
TCP xx.xx.xx.xxx:58278 yyyyyyyyyy:9090 TIME_WAIT 0
TCP xx.xx.xx.xxx:58280 yyyyyyyyyy:9090 TIME_WAIT 0
TCP [::]:9090 yyyyyyyyyy:0 LISTENING 19892
Attempt 1 kill -9 19892 fails to kill the process, giving error
-sh: kill: (19892) - No such process
Attempt 2 taskkill /PID 19892 fails to kill the process, giving error
ERROR: The process with PID 19892 could not be terminated.
Reason: This process can only be terminated forcefully (with /F option).
Attempt 3 taskkill /F /PID 19892 works
SUCCESS: The process with PID 19892 has been terminated.
Question:
How are kill and taskkill different?
Why do I need the /F option here?
What does the /F option do exactly? (apparently it's something more than sending SIGKILL)
/f : Specifies that process(es) be forcefully terminated. This parameter is ignored for remote processes; all remote processes are forcefully terminated (source)

Related

Can't run Vue2 js projects [duplicate]

i am testing a server written in nodejs on windows 7
and when i try to run the tester in the command line i get the following error
Error: listen EADDRINUSE
at errnoException (net.js:614:11)
at Array.0 (net.js:704:26)
at EventEmitter._tickCallback (node.js:192:40)
how can I fix it without rebooting?
Run:
ps -ax | grep node
You'll get something like:
60778 ?? 0:00.62 /usr/local/bin/node abc.js
Then do:
kill -9 60778
It means the address you are trying to bind the server to is in use. Try another port or close the program using that port.
On Linux (Ubuntu derivatives at least)
killall node
is easier than this form.
ps | grep <something>
kill <somepid>
Neither will work if you have a orphaned child holding the port. Instead, do this:
netstat -punta | grep <port>
If the port is being held you'll see something like this:
tcp 0 0.0.0.0:<port> 0.0.0.* LISTEN <pid>/<parent>
Now kill by pid:
kill -9 <pid>
The following command will give you a list of node processes running.
ps | grep node
To free up that port, stop the process using the following.
kill <processId>
You are getting the error EADDRINUSE because the port, which your application wants to use, is occupied by another process. To release this port, you need to terminate the occupying process.
Since you are on Windows, you can terminate the process using the command prompt (cmd). With the cmd you can discover the process ID (PID) of the blocking application. You will need the PID in order to terminate / kill the process.
Here is a step-by-step guide...
Find all processes which are running on a specified port (in this example, Port is "3000"):
netstat -ano | find ":3000 "
The netstat command will list up all processes running on the specified port. In the last column of the netstat results you can see the PIDs (in this example, PID is "8308"). You can find out more about a specific PID by running the following command:
tasklist /fi "pid eq 8308"
If you want to terminate a process, you can do that with the following command by using its PID (in this example, PID is "8308"):
taskkill /pid 8308 /f
Screenshot
When you get an error Error: listen EADDRINUSE,
Try running the following shell commands:
netstat -a -o | grep 8080
taskkill /F /PID 6204
I greped for 8080, because I know my server is running on port 8080. (static tells me when I start it: 'serving "." at http://127.0.0.1:8080'.) You might have to search for a different port.
suppose your server is running on port 3000
lsof -i tcp:3000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 11716 arun 11u IPv6 159175 0t0 TCP *:3000 (LISTEN)
after that use kill -9 <pid>
in the above case sudo kill -9 11716
use below command to kill a process running at a certain port - 3000 in this example below
kill -9 $(lsof -t -i:3000)
One possible solution that worked for me was simply to close the window in browser where I had the corresponding "http://localhost:3000/" script running.
When you get an error
Error: listen EADDRINUSE
Open command prompt and type the following instructions:
netstat -a -o | grep 8080
taskkill /F /PID** <*ur Process ID no*>
after that restart phone gap interface.
If you want to know which process ID phonegap is using, open TASK MANAGER and look at the Column heading PID and find the PID no.
Check the Process ID
sudo lsof -i:8081
Than kill the particular Process
sudo kill -9 2925
The aforementioned killall -9 node, suggested by Patrick works as expected and solves the problem but you may want to read the edit part of this very answer about why kill -9 may not be the best way to do it.
On top of that you might want to target a single process rather than blindly killing all active processes.
In that case, first get the process ID (PID) of the process running on that port (say 8888):
lsof -i tcp:8888
This will return something like:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
node 57385 You 11u IPv6 0xac745b2749fd2be3 0t0 TCP *:ddi-tcp-1
(LISTEN)
Then just do (ps - actually do not. Please keep reading below):
kill -9 57385
This works on Mac:
Step 1.
sudo lsof -i tcp:3000 (or whatever port you want to kill)
Above command will give you the Process Id(s) currently holding the port.
Step 2.
Kill -9 <pid>
you can change your port in app.js or in ur project configuration file.
default('port', 80)
and to see if port 80 is already in use you can do
netstat -antp |grep 80
netstat -antp |grep node
you might wanna see if node process is already running or not.
ps -ef |grep node
and if you find its already running, you can kill it using
killall node
I created 2 servers, listening on same port 8081, running from same code, while learning
1st server creation shud have worked
2nd server creation failed with EADDRINUSE
node.js callback delays might be reason behind neither worked, or 2nd server creation had exception, and program exited, so 1st server is also closed
2 server issue hint, I got from:
How to fix Error: listen EADDRINUSE while using nodejs?
Error: listen EADDRINUSE to solve it in Ubuntu run in terminal netstat -nptl and after this kill -9 {process-number} this command is to kill node process and now you can try to run again node server.js command
Ex
listen EADDRINUSE :::8080
netstat -nptl
tcp6 0 0 :::9000 :::* LISTEN 9660/java
tcp6 0 0 :::5800 :::* LISTEN -
tcp6 0 0 :::5900 :::* LISTEN -
tcp6 0 0 :::8080 :::* LISTEN 10401/node
tcp6 0 0 :::20080 :::* LISTEN 9660/java
tcp6 0 0 :::80 :::* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
tcp6 0 0 :::10137 :::* LISTEN 9660/java
kill -9 10401
I have node red installed on my Mac and my Raspberry Pi. Had the exact same problem and doing 'killall' didn't help. Once I shut down the Raspberry Pi and restarted my computer it worked fine.
It may be possible that you have tried to run the npm start command in two different tabs .you cant run npm start when it is already running in some tab.check it once .
To anyone who has tried all of the above, but still can't find the rouge process, try them all again but make sure you include "sudo" in front of the commands.
If you like UI more, find the process Node.js in windows task manager and kill it.
ps -ef |grep node
find app.js ,
kill pid of app.js
simply kill the node
as
pkill -9 node
in terminal of ubantu
than start node
You will need to kill the port by trying to use the following command on the terminal
$ sudo killall -9 nodejs
I have solved this issue by adding below in my package.json for killing active PORT - 4000 (in my case) Running on WSL2/Linux/Mac
"scripts": {
"dev": "nodemon app.js",
"predev":"fuser -k 4000/tcp && echo 'Terminated' || echo 'Nothing was running on the PORT'",
}
Source
I Just delete that (cmd) Terminal and open another terminal and run again
node myfile.js
it works awesomely for me.
It's might be too late but it's working like a charm.
You need pm2 to be installed
npm install -g pm2
To stoping the current running server (server.js):
pm2 stop -f server.js
It's year 2022 now and I am on Monterey (Mac user).
lsof -i tcp:3000
Kill -9 <PID shown in your list>
To kill node server first run this command in your terminal :
top
open another window then copy the server id from the previous window: PID number -9 kill
so now you killed your node server try again to run your app.
I used the command netstat -ano | grep "portnumber" in order to list out the port number/PID for that process.
Then, you can use taskkill -f //pid 111111 to kill the process, last value being the pid you find from the first command.
One problem I run into at times is node respawning even after killing the process, so I have to use the good old task manager to manually kill the node process.
In window, please execute this command:
taskkill /F /PID 1952

Forwarding SIGTERM over ssh

I want ssh to forward the SIGTERM signal to the remote command.
ssh root#localhost /root/print-signal.py
Get PID of ssh:
ps aux| grep print-signal
Kill the matching ssh process:
kill pid-of-ssh
Unfortunately only the ssh process itself gets the signal, not the remote command (print-signal.py). The remote command does not terminate :-(
How can I make ssh "forward" the SIGTERM signal to the remote command?
I think you can do the following :
ssh root#localhost /root/print-signal.py
**Get PID of python file running **
ps aux| grep print-signal
Kill the matching ssh process:
ssh root#localhost "kill <pid>"
Here you are sending command to remote host .
Hope this solves your problem .
Send via SSH this (tested on sleep process):
$(proc=$(pidof sleep) && kill $proc)

Why my 8081 port is listening to some or the other process continuously even after kill process?

I am new to Coding and Computer Science, and i was working with React-native on Android Studio. Whenever i start to use the simulator on the machine it asks me this:
ERROR Packager can't listen on port 8081
Most likely another process is already using this port
Run the following command to find out which process:
Tough i have killed the process listening to Port 8081 the previous time i have started the simulator but it asks me agaain. Wants to understand what port 8081 is assigned to once it is killed using the taskkill /f /pid $$$$
Hey even i had the same issue,i solved it by the following:
1.) lsof -i :8081
2.) kill -9 <PID> kill the process that is running on the port 8081 by specifing the PID that you get as a result of step 1.
OR
You can try running it on another port by using the command 'react-native start --port=8088'
If you get an error stating "Could not connect to development server" then try npm start,it should work.

How to enable SSH on SLES 12?

I am trying to enable ssh connection to suse linux. I have sshd service running:
peeyush#linux-pohb:~/gccgo.work> systemctl status sshd.service
sshd.service - OpenSSH Daemon
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)
Active: active (running) since Thu 2015-03-19 18:36:05 IST; 3h 50min ago
Process: 5702 ExecStartPre=/usr/sbin/sshd-gen-keys-start (code=exited, status=0/SUCCESS)
Main PID: 6035 (sshd)
CGroup: /system.slice/sshd.service
└─6035 /usr/sbin/sshd -D
Mar 19 18:36:01 linux-pohb sshd-gen-keys-start[5702]: Checking for missing se...
Mar 19 18:36:05 linux-pohb sshd-gen-keys-start[5702]: ssh-keygen: generating ...
Mar 19 18:36:06 linux-pohb sshd[6035]: Server listening on 0.0.0.0 port 22.
Mar 19 18:36:06 linux-pohb sshd[6035]: Server listening on :: port 22.
Hint: Some lines were ellipsized, use -l to show in full.
It is listening on port 22 fine:
peeyush#linux-pohb:~/gccgo.work> netstat -an | grep :22
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 :::22 :::* LISTEN
But I am not able to connect to it.
[root#lep8a peeyush]# ssh root#192.168.122.19
ssh: connect to host 192.168.122.19 port 22: Connection timed out
My head is aching with finding solutions on internet. Nothing is working.
Could you guys please help me out?
Check if your firewall accepts incoming TCP connections on port 22:
# iptables -nL | grep 22
If the result is empty, you have to add a rule in your firewall.
Open Yast and firewall configuration:
# yast firewall
Goto "Allowed Services" and add "Secure Shell Server". Save and quit Yast and try to connect.
Comment: If you have disabled your firewall completly (not recommended) this answer does not apply.
Run this command:
systemctl enable sshd.service
Then make necessary changes in your /etc/ssh/sshd_config file, and start sshd via:
systemctl start sshd.service
I was dealing with the same problem in SUSE Linux Enterprise Server 15 x86-64. Within the system I was able to # ssh 127.0.0.1 (so the sshd service was working correctly), but from other nodes I got a "Timed out" message.
First, I checked the firewall rules (see answer from xloto):
# iptables -nL | grep 22
Resulted in an empty return message, so we need to set an additional rule.
To set the the firewall rule for SSH's standard port 22, I followed another tutorial (as I do not have a GUI):
# firewall-cmd --permanent --add-service=ssh
# firewall-cmd --reload
It worked for my case, but I'm not sure whether this is best practice.

Getting the error "Apache port:443 is being used by another application" after installing AMPPS

After installing AMPPS for Windows, while trying to launch Apache I get an error saying,
Apache port:443 is being used by another application.
I do not have any other programs (that I know of) such as Skype that are currently running. How can I monitor my 443 port or change the port for Apache?
By the way, I have McAfee as an anti-virus.
Open command prompt(start -> run -> cmd) and type the following command :
C:\> netstat -aon | findstr 0.0:443
Last column of the output is the PID of the application using port 443.
You can find the application name in Task Manager. Go to Process Tab then in Menu Bar of Task Manager go to View -> Select Column -> Check "PID" and press Ok. Search for the PID in the list(Click Below "Show processes from all users" in case if you don't find the PID), corresponding process is the application which is using port 443. Stop or Uninstall it to make your AMPPS Apache work.
For terminate any process:
open cmd as administrator
netstat -aon | findstr 0.0:443
shows: TCP 0.0.0.0:443 0.0.0.0:0 LISTENING 4876, NOTE THE PID 4876
taskkill /pid 4876 /f
For disable port of other program(vmware):
open VMware Workstation
Edit->Preferences...->Shared VMs->Change Settings->Yes->Disable Sharing
You can change the port. -> Ok
I was facing the same issue as on port 443, vmware service was running, i went to task manager and stopped the service and then started apache and it worked fine.
After getting the pid number using netstat -aon | findstr 0.0:443, if you are having trouble finding pid 443 in Task Manager then:
Kill the process 443 by using the cmd: taskkill /pid 443.
You will avoid downloading any software or any other headache.
Here is the more elaborated way to solve this issue based on comments from Jigar and Daniel Dropik(Thank You guys),
So check with which service you are getting this port issue, in my case it was with Apache and MySQL.
Starting with Apache, either click on "Logs" in XAMPP control panel and open error log to see the problem or go to XAMPP installation directory and run "apache_start.bat" batch file, this will also give to the problem cause.
Now you have got the Port number which causing trouble,
Now follow Jigar's comment and run
netstat -aon | findstr 0.0:443
Remember 443 is the port number so enter the port number causing the issue.
This command will give the PID of the process using the port like below,
TCP 0.0.0.0:443 0.0.0.0:0 LISTENING 4996
So 4996 is the process ID(PID) that you want to stop.
Now using Task Manager you could see and kill the process but some processes could not displayed by Task Manager, in this case you have to download Mycrosoft's Process Explorer, unzip the downloaded package and run the ".exe" file as an Administrator.
You will find a bunch of processes running, sort them using PIDs and you will find your service.
Select that service and stop it.
Then go to the XAMPP control panel and run Apache and you will be able to start it this time.
Follow same process for MySQL as well.
Enjoy :)
First off you must find the process using that port. we can find it with below command.
netstat -aon | findstr 443
then we might finish finded process either below command:
taskkill /PID PORTNUMBER /F
OR
you can go to taskmanager and find the process from process bar ( with swiching PID column) and click on end task.
go to Ampps\apache\conf\extra
open file httpd-ssl.conf with note++
change the port
Listen 443--->change port
VirtualHost default:443--->"change port **>
DocumentRoot "D:/Ampps/www"
ServerName localhost:443--->**change port
and saved