Unable to stop appium server programmatically - macos

I am using this command to stop the Appium server :
kill $(lsof -t -i: 10723)
But now it is not working.

Avoid hardcoding pid, port, address, etc. Search by process name (Appium):
kill -9 $(ps -A | grep -m1 Appium | awk '{print $1}')

Related

Command works in terminal but not in makefile

This is my makefile:
start:
emulator -avd Galaxy_Nexus_API_28 -writable-system &
charles &
remount:
adb -s emulator-5554 wait-for-device root
adb -s emulator-5554 wait-for-device shell mount -o rw,remount /
adb -s emulator-5554 wait-for-device shell mount -o rw,remount /sys
stop:
kill -9 $(ps -A | grep qemu-system-x86 | awk '{print $1}') &
kill -9 $(ps -A | grep charles.jar | awk '{print $1}') &
test:
ps -A | grep qemu-system-x86
Starting the android AVD and Charles works fine. Then when I run make stop --just-print I get this as output:
kill -9 &
kill -9 &
I guess this means the output of $(ps -A | grep qemu-system-x86 | awk '{print $1}') is empty. This is weird because of two reasons:
First because when I run make test I get the following (correct) output:
ps -A | grep qemu-system-x86
64434 pts/0 00:00:59 qemu-system-x86
Second, because running echo $(ps -A | grep qemu-system-x86 | awk '{print $1}') in the terminal nicely prints the correct pid of the process. So the ps | grep command works in the makefile, but the awk print addition only works in the terminal. How can this be? And how do I fix it?
For now I'm going to stick to using killall -9 java upon calling make stop but this is of course not the nicest way to handle things.
Suggesting to try simplify stop target with pkill commands.
Like this:
stop:
pkill -9 -f qemu-system-x86
pkill -9 -f charles.jar
This solution also solve the problem of killing the grep or awk command containing the target pattern instead of killing the target process command.

bash script to kill process on remote machines

I want to kill process on remote machines via ssh but its not working
VAR=$(ssh ${HOSTS} ps -ef | grep $SERVICE | grep -v grep | awk '{print $2}' | xargs kill -9)
ssh ${HOSTS} ps ef < /dev/null > /dev/null 2> /dev/null
The problem is that your pipe process get execute on your local host rather than on the server.
A solution is to quote protect the command:
VAR=$(ssh ${HOSTS} "ps -ef | grep $SERVICE | grep -v grep | awk '{print \$2}' | xargs kill -9")
ssh ${HOSTS} "ps ef" < /dev/null > /dev/null 2> /dev/null
Below command worked well for me to kill processes on remove server.
I'm able to kill tail command running on remote server.
ssh -tty ${Host}" ps -efwww | grep tail |grep -v grep |cut -c 10-15|xargs kill -9 "

Kill all processes running on port 8080 on Mavericks

I'm getting a "socket.error: No socket could be created" when running a web.py script.
Is there a way to kill all processes on running on port 8080 (or any other port I wish) with a single line in Terminal on OSX Mavericks?
It's a single line, but you'd need to put it into a shell alias or shell script in order to make it easy to use:
$ kill $(lsof -i tcp:8080 | tail -n +2 | awk '{ print $2 }')
If you want to see and kill processes that don't belong to you, then sudo needs to get involved:
$ sudo kill $(sudo lsof -i tcp:8080 | tail -n +2 | awk '{ print $2 }')
The best way to kill all proccesses running on port 8080 in ubuntu is:
sudo fuser -k 8080/tcp

Trying to kill process by shell scripting

I want to kill process through shell scripting it is giving me error. Here is what i tried so far:
When i try to kill memcache it give me error like "kill: No such process" , i used below command:
ps -ef | grep "memcache" | awk '{print $2}' | xargs kill;
or if try like below:
kill -9 $(pidof memcache)
i get error like below:": arguments must be process or job IDs"
When i run directly on command prompt process is running:
ring#ubuntu:~/parasol$ ps aux | grep memcache
memcache 873 0.0 0.0 323220 1188 ? Sl 22:56 0:00 /usr/bin/memcached -m 64 -p 11211 -u memcache -l 127.0.0.1
ring 1714 0.0 0.0 9384 920 pts/0 S+ 23:45 0:00 grep --color=auto memcache
I reff to https://askubuntu.com/questions/239923/shell-script-to-9-kill-based-on-name
AND
Shell script to capture Process ID and kill it if exist
My Ubuntu Version:
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=12.04
DISTRIB_CODENAME=precise
DISTRIB_DESCRIPTION="Ubuntu 12.04.2 LTS"
NAME="Ubuntu"
VERSION="12.04.2 LTS, Precise Pangolin"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu precise (12.04.2 LTS)"
VERSION_ID="12.04"
Acutally
ps -ef | grep memcache
will give two lines..
so you can go this way
ps -ef | grep memcache | grep -v "grep" | awk '{print $2}' | xargs kill;
This can get you exact one PID
if I has to do I would break it in 2 lines in start
#!/bin/bash
PID=`ps -ef | grep memcache | grep -v "grep" | awk '{print $2}'`
echo $PID
#to check PID is right
kill -9 $PID
save it in scrip files say test.sh
then on terminal
chmod +x test.sh
then
./test.sh
You can use these commands:
pkill memcached
or
pgrep memcached | xargs kill -9
or
killall memcached.
pgrep, pkill - look up or signal processes based on name and other attributes.
Your first command might be killing itself before having chance to kill the target processes.
For a reliable way, run pkill /usr/bin/memcached or pkill -9 /usr/bin/memcached although the latter is a bad practice.
For the first command, you see that there are two processes that matches the pattern you grep for. The actual memcached process and your grep process. That is probably the reason for the error of the first command line.
Try narrowing the search down, for example by grepping for e.g. "^memcache.*/usr/bin/memcached".
The problem with the second error is that you're calling pidof with the username instead of the process name, so the command is essentially kill -9 without any process id. Try instead e.g. pidof memcached to get the process id of the correct process.
ps -ef | grep "memcache" | awk '{print $2}' | xargs kill;
PID=`ps -ef | grep memcache | grep -v "grep" | awk '{print $2}'`
#...
First, you could use cut instead of awk in this case. No need to use a tank to kill a fly ;)
Then, why is it necessary to brutally kill memcache? You have a daemon to stop it :
/etc/init.d/memcached stop
service memcached stop

Getting PID of sshd

I am executing sshd in a bash script using
$ /usr/sbin/sshd
How do I get the process ID of this sshd that I executed?
sshd will typically write a PID file; by default this is at /var/run/sshd.pid. You can use this to find the process ID of the listening sshd process. You should be aware that sshd may fork several subprocesses as it works, so what you want really depends on what you intend to do with it.
Try this command:
ps aux | grep -e /usr/sbin/sshd | grep -v grep | tr -s " " | cut -d " " -f2
or
cat /var/run/sshd.pid

Resources