Sponsored Content
Top Forums Shell Programming and Scripting Logon profile kill script only partially working Post 302227383 by otheus on Thursday 21st of August 2008 05:52:28 AM
Old 08-21-2008
Not bad for a beginner. I'm surprised the line with the "if" isn't a problem, however. You need a space between [ and $IPCNT.

Second, it's better to do a kill -1 $PID than kill -9. The former will try to close the child processes of a shell, while the latter may result in hung child processes. Better yet, don't just kill the process, but kill the process group. This is the second field from "ps -j $PID". So you can do:
Code:
while read PID; do 
 GPID=$( ps -j $PID | awk 'NR==2 { print $2 }' )
 kill -1 -$GPID
done < oldpids

It might also be necessary to wait for two seconds before continuing the script, giving the system a chance to perform the kills before the script continues. Adding "sleep 1" I think might be enough.

Also, you don't have to do a cat every time -- grep, sed, awk can all take a filename as an argument -- but maybe using cat helps you keep things straight. Also, no need to do a grep and then an awk. Awk does both. (sed -n works similarly.)

My system's "whoami" doesn't work the same as yours, otherwise I could test a similar script. But fix the problem with the bracket
 

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

Kill - not working

Hi, I have logged into a Sun Solaris machine( Putty -telnet ) , which got hung. now I need to kill the process - ksh When I tried to kill like : kill -9 <pid of ksh> , it is not giving any error , but the process is not getting killed... Here is what I did $ps -fu shihab ... (5 Replies)
Discussion started by: shihabvk
5 Replies

2. UNIX for Advanced & Expert Users

commands after .profile modification not working

Hi , I have modified .profile and after that i ran it as .profile. Now no command i working even ls is not working When i type ls , it is showing that -ksh not found I tried to run as . $home/.profile , it is saying as permission denied . How can we do that .. any idea.. Thanks... (2 Replies)
Discussion started by: arunkumar_mca
2 Replies

3. Solaris

/etc/profile file edited. No command working

I have X4500 and I created a user. I wanted to give him root privileges and for editing the sudoers files I typed visudo sudoers. But it said visudo command not found. After googling I found that we need to set path in etc/profile. I edited that and put the following command ... (3 Replies)
Discussion started by: bharu_sri
3 Replies

4. AIX

AIX 5.3 ML10 new install, rsh only partially working

Two boxes we just reloaded to use as a two node HACMP cluster to insure our software is compatible. Install disks we received at our library on 5/2009 AIX 5.3-ML10 For sake of argument names ibmaix1 and ibmaix2 On both: ibmaix1# oslevel -r 5300-10 .rhosts files with 600 permissions... (0 Replies)
Discussion started by: DrKillPatient
0 Replies

5. AIX

Kill -9 not working?

What to do when Killl -9 doesn't work to end a process? (2 Replies)
Discussion started by: bbbngowc
2 Replies

6. Solaris

After giving Bash the .profile settings are not working

I am using Solaris ... I have some settings in my .profile and in .profile iam calling some scripts. After i logged in to that box if i gave "bash" and proceed with my shorcuts(alias) are not working . (3 Replies)
Discussion started by: girija
3 Replies

7. UNIX for Advanced & Expert Users

user .profile file not working

Hi All, I tried creating a .profile file but it is not working even after exiting the session. But before that I will give a quick background. I log into UNIX(SUN - ksh) and then SUDO to another user. After that I change DIRECTORY. In this DIRECTORY I tried creating the profile file but it... (4 Replies)
Discussion started by: sumeet
4 Replies

8. Shell Programming and Scripting

kill -9 not working

Hi All, I tried killing a bunch of scripts. They seem to have worked because ps -ef | grep -i SCRIPT_NAME is not showing them but the logs are getting populated and jobs in the script are getting done. How do I really kill them or atleast see the process running? Thanks Sumeet (12 Replies)
Discussion started by: sumeet
12 Replies

9. UNIX for Dummies Questions & Answers

Script partially executes??

Hi All, I am calling a shell script from another shell script, however, it only executes part of it (the echo commands only). What could be some causes for that? For example: ShellScriptA.sh: ... ... ... . ShellScriptB.sh ShellScriptB.sh contents: echo date echo... (7 Replies)
Discussion started by: DBnixUser
7 Replies

10. Shell Programming and Scripting

Command / script to partially rename file

Hi I have numerous files names product_host_result_B1000842.txt product_host_result_B1000847.txt product_host_result_C1000842.txt product_host_result_C1000848.txt etc. I need them renamed so that the 'product_host_result' becomes 'output_product_host' but the rest of the filename is... (6 Replies)
Discussion started by: Grueben
6 Replies
KILLALL(1)							   User Commands							KILLALL(1)

NAME
killall - kill processes by name SYNOPSIS
killall [-Z, --context pattern] [-e, --exact] [-g, --process-group] [-i, --interactive] [-n, --ns PID] [-o, --older-than TIME] [-q, --quiet] [-r, --regexp] [-s, --signal SIGNAL, -SIGNAL] [-u, --user user] [-v, --verbose] [-w, --wait] [-y, --younger-than TIME] [-I, --ignore-case] [-V, --version] [--] name ... killall -l killall -V, --version DESCRIPTION
killall sends a signal to all processes running any of the specified commands. If no signal name is specified, SIGTERM is sent. Signals can be specified either by name (e.g. -HUP or -SIGHUP) or by number (e.g. -1) or by option -s. If the command name is not regular expression (option -r) and contains a slash (/), processes executing that particular file will be selected for killing, independent of their name. killall returns a zero return code if at least one process has been killed for each listed command, or no commands were listed and at least one process matched the -u and -Z search criteria. killall returns non-zero otherwise. A killall process never kills itself (but may kill other killall processes). OPTIONS
-e, --exact Require an exact match for very long names. If a command name is longer than 15 characters, the full name may be unavailable (i.e. it is swapped out). In this case, killall will kill everything that matches within the first 15 characters. With -e, such entries are skipped. killall prints a message for each skipped entry if -v is specified in addition to -e, -I, --ignore-case Do case insensitive process name match. -g, --process-group Kill the process group to which the process belongs. The kill signal is only sent once per group, even if multiple processes belonging to the same process group were found. -i, --interactive Interactively ask for confirmation before killing. -l, --list List all known signal names. -n, --ns Match against the PID namespace of the given PID. Use 0 to match against all namespaces. The default is to match against the current PID namespace. -o, --older-than Match only processes that are older (started before) the time specified. The time is specified as a float then a unit. The units are s,m,h,d,w,M,y for seconds, minutes, hours, days, weeks, Months and years respectively. -q, --quiet Do not complain if no processes were killed. -r, --regexp Interpret process name pattern as a POSIX extended regular expression, per regex(3). -s, --signal, -SIGNAL Send this signal instead of SIGTERM. -u, --user Kill only processes the specified user owns. Command names are optional. -v, --verbose Report if the signal was successfully sent. -V, --version Display version information. -w, --wait Wait for all killed processes to die. killall checks once per second if any of the killed processes still exist and only returns if none are left. Note that killall may wait forever if the signal was ignored, had no effect, or if the process stays in zombie state. -y, --younger-than Match only processes that are younger (started after) the time specified. The time is specified as a float then a unit. The units are s,m,h,d,w,M,y for seconds, minutes, hours, days, weeks, Months and years respectively. -Z, --context (SELinux Only) Specify security context: kill only processes having security context that match with given extended regular expres- sion pattern. Must precede other arguments on the command line. Command names are optional. FILES
/proc location of the proc file system KNOWN BUGS
Killing by file only works for executables that are kept open during execution, i.e. impure executables can't be killed this way. Be warned that typing killall name may not have the desired effect on non-Linux systems, especially when done by a privileged user. killall -w doesn't detect if a process disappears and is replaced by a new process with the same PID between scans. If processes change their name, killall may not be able to match them correctly. killall has a limit of names that can be specified on the command line. This figure is the size of an unsigned long multiplied by 8. For most 32 bit systems the limit is 32 and similarly for a 64 bit system the limit is usually 64. SEE ALSO
kill(1), fuser(1), pgrep(1), pidof(1), pkill(1), ps(1), kill(2), regex(3). psmisc 2017-06-12 KILLALL(1)
All times are GMT -4. The time now is 07:39 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy