dropdown menu

AIX - COMMANDS

Commands

CUT:

lspv | cut -c 6-7            lists the hdisks numbers (cuts the 6th and 7tn character (disk nubers))
dlnkmgr view -drv | grep -w 00000 | awk '{print $4}' | cut -d . -f 3

--------------------------------------------------------------------------------

EXPR: integer arithmetic

\*                           multiplication (\ is needed to tell * is not a special character)
/                            division
%                            remainder
                           addition
-                            substraction

expr \( 6 + 4 \) / 2        5

--------------------------------------------------------------------------------

FIND: recursively searches the directory tree

find / -xdev -type f -name "cor*" -size +10000c -exec ls -l {} \;

    /                        where to find
    -xdev                    looks only in the given fs
    -type f                  what type to look for (f: file, d: direcory)
    -name "cor*"             name to look for
    -size +10000c            search for the given size (+10000c : greater than 10000 character (larger then 10kbyte))
    -size +2                 search for greater than 1kbyte (bloxk size is 512 byte, that's why +2 is given)
    -exec ls -l {} \;        what command to execute
                             ({}: it represents each findings and \; is needed at the end of line)
                             e.g. find /home -xdev -name "*.old" -exec rm {} \;
    -mtime -1                file modifocation date is less then 1 day (+1 means older than 1 day)

find . -name '*.ksh' -ok rm {} \; this will ask if the command (rm) should be executed or not (much safer if find is not perfect)
find /etc/rc.d -ls           it lists the files and dirs in the given dir
find /tmp/bb -exec awk '/func/ {print FILENAME}' {} \;   it will check in /tmp/bb if any files contains the word "func" and list those

--------------------------------------------------------------------------------

GREP: (Global Regular Expression Parser) The grep command searches for the pattern.

grep -i                      ignore case (small letter or capital)
grep -c                      displays only a count of matching lines
grep -n                      shows line number at the beginning of the matching line
grep -v                      invert the sense of matching, to select non-matching lines
grep -w                      selects only whole words
grep -l                      lists the name of the files (once) which contain matching line  (grep -l paging00 *)

ps -ef | egrep 'ssh|aix'     select lines with ssh and aix
errpt -a|grep -A1 'NAME'     selects lines with NAME and shows 1 line after that (A: after, B: before)

--------------------------------------------------------------------------------

HEAD, TAIL:

head filename                displays first 10 lines of the file
head -50 filename            displays first 50 lines

tail filename                displays last 10 lines of the file
tail -50 filename            displays last 50 lines
tail +15 filename            displays the file starting from the 15th line
tail -f filename             used when we are monitoring the file (interactively shows how the file is changing)

--------------------------------------------------------------------------------

LSOF:


NETWORK
-n                           no host name resolution
-P                           not converts port numbers to port names

lsof -i                      show all network connections
lsof -i| grep LISTEN         shows what ports are waiting for connections
lsof -i | grep ESTABLISHED   shows current active connections

lsof -i tcp                  list only TCP connections (works with udp as well)
lsof -i :<port>              shows all connections of a given port (lsof -i :22 or lsof -i :ssh)
lsof -i @<host>              shows connections to a specific host (lsof -i @192.168.1.5)
lsof -i protocol:@ip:port    this is the syntax for network findings (protocol: tcp or udp, @ip: any ip address, port: a port number)
lsof -a -u <user> -i         shows all network activity of a user (-a combines -u and -i)

USER, FILES, PROCESSES
lsof -u <user>               shows what is open for a user (lsof -u oracle)
lsof <file>                  shows what is using a file (lsof /var/adm/syslog.log)
lsof <directory>             shows what pids are using the filesystem (directory) (it can be good if we cannot umount)
lsof +D <directory>          shows which file is open by which process in a directory (lsof +D /usr)
                             (+D will show recurcively the open files, otherwise only device name would be shown)
lsof -N                      list all NFS files
lsof -c <command>            shows files and network connections a command is using (lsof -c ssh)

lsof -p <pid>                shows what a proccess ID has open (lsof -p 335545)

-----------------------------

HOW TO FIND WHAT FILES ARE OPENED BY A PID

1.
root@aix20: /root # lsof -p 319660
COMMAND    PID USER   FD   TYPE   DEVICE SIZE/OFF  NODE NAME
ovcd    319660 root   32r  VREG     10,5    12153 69705 /usr (/dev/hd2)

(it will show the filesystem and the indode number (69705))


2.
root@aix20: /root # find /usr -inum 69705
/usr/lpp/VV/msg/en_US/sec.cm.client.cat


--------------------------------------------------------------------------------

METACHARACTERS, VARIABLES:

                     GREP    SHELL
single character      .       ?
multicharacter        .*      *
character range     [x-z]    [x-z]
begins a line         ^       N/A
ends a line           $       N/A
variable             N/A      $   

HOME                         home directory
$PS1                         prompt symbol   
set                          displays the values of all shell variables

--------------------------------------------------------------------------------

RSYNC:

Much like cp, rsync copies files from a source to a destination. Unlike cp, the source and destination of an rsync operation can be local or remote. rsync can resume a transfer after interruption; it transfers only those portions of a file that differ between source and destination; and rsync can perform entire or incremental backups.

By default, rsync uses Secure Shell (SSH) as its transport mechanism; you can reuse your machine aliases and public keys with rsync

rsync -av /tmp/bb_rs30 /tmp/bb        it will copy the directory (/tmp/bb_rs30) and its contents under /tmp/bb
rsync -av /tmp/bb_rs30/ /tmp/bb       it will copy the contents of the named directory but not the directory itself (check / at the end)
                                      -v option enables verbose messages
                                      -a option (stands for archive), is a shorthand for -rlptgoD:
                                      recurse, copy symbolic links as symbolic links, preserve permissions, preserve file times,
                                      preserve group, preserve owner, and preserve devices and special files, respectively

rsync -n -av /tmp/bb_rs30/ /tmp/bb   -n: previews what will happen but does not move a single byte (it is good for testing)

rsync -av /tmp/bb_rs30/ aix2:/tmp/bb_rs20  it will copy the contents of the given dir to the other host
                                           (assuming the same login name on the remote machine)


--------------------------------------------------------------------------------

SORT:

cat /etc/passwd | sort -t: -n +2
    -t:                      gives the delimeter character (here :, deafult is the space)
    -n                       numerical order
    +2                       sort by the 3rd column
    -r                       reverse order

df -m | sort -n +3 | egrep '9.%|100%'    sorts by the 4th column (%) of the filesstems, which are 90-100% full
cat animals | sort +0.1      sort the file animals by the second character of the first word
ls -lR |sort -nk 5|tail -20  sorts the 20 largest file
lspv | sort -k1.6n           list hdisk in numerical order (lspv|sort -tk +1 -n <--it is the same (delimiter is "k")
lspv | sort -k1,1.5 -k1.6n   list hdisks then vpaths in numeric order

--------------------------------------------------------------------------------

TAR:

tar -cvf /tmp/file.tar .                       saves where we are to the given path (-c: create, -v: verbose, -f: file)
tar -cvf conf.tar conf                         creates conf.tar of the dir conf
tar -xvf /tmp/file.tar                         extracts the tar file (-x: extract)
tar -xvf -C /home/bb /tmp/file.tar             it will extract the tar file to /home/bb
tar -tvf /tmp/file.tar                         list (verify) the content of a tar file

tar -cf - * | gzip -9 > vmi.tar.gz             makes tar and zip wehere we are
tar cvf - openssh5.8p1 | gzip -c > openssh5.8p1.tgz   creates tgz in one command


tar: 0511-197 DirectorServer: Cannot write data extracted with the tar command:
A file cannot be larger than the value set by ulimit.


I changed these ulimit settings after that it was OK (dont't forget to logout and login again)
root@bb_lpar: /bb # chuser fsize=-1 fsize_hard=-1 root
root@bb_lpar: /bb # chuser data=-1 data_hard=-1 root


-------------------------------------------------------------------------------- 

TRUSS:

truss <command>     
         it will show what system calls a command makes
truss -c -p <pid>            it will trace a process (-c: counts the system calls rather than displaying them, -p: pid)
truss -d -p <pid> -o
truss -t open lsps -a        shows whatis needed for the given command (here lsps -a)

--------------------------------------------------------------------------------

XARGS:

lspv|awk '{print$1}'|xargs   it will list the elements in a line separated with space
cat list | xargs -t rm       will rm all the files which are in the file list
ls | xargs -t -I {} mv {} {}.old it will rename to .old all the file in the current dir
    -t                       it echoes the constructed command (trace mode) (it is optional)
    -I {}                    insert each line of the ls to that place where the {} symbol appear

lsdev -Cc disk | xargs -n1 rmdev -dl removes all the listed disks
    -n1                      1 element will be passed each time to xargs (if n2 then the command will be created with 2 elements)

--------------------------------------------------------------------------------

ZIPPING:

gzip-V                       shows gzip version
gzip file1                   zip
gzip -d file1.gz             unzip

gzip -9 filename             will zip (and remove the file automatically)
gunzip filename              unzipping it

gzip -c file > file.gz       it creates a zip file but leave the original file as well
> filename                   after that original file can be emptied

compress file1               the original file will be deleted and a new compressed file will be created with a .Z at the end
zcat file1.Z                 displays the compressed files (without uncompression)
uncomress file1.Z            uncompressing a file (the compressed one will be deleted)

if you receive this:
gunzip SysDir6_2.tar.gz
gunzip: SysDir6_2.tar: File too large


this is because gzip 1.2.4 (or lower gzip versions) need a patch to accept large files, workaround for this problem:
gzip -d -c SysDir6_2.tar.gz| tar xvf -

--------------------------------------------------------------------------------

OTHER:

file <filename>              shows the type of a file

diff file1 file2             compares only text files
cmp file1 file2              compares all types of files
dircmp dir1 dir2             compares directories

time cp file1 /home          show the time to accomplish the command (godd for performance analysis)

ps $$                        shows which shell is in use
echo $SHELL                  shows the current shell
printenv                     view environmental variables

cat -vet file                shows tabs, enters... as viewable characters
    -v                       displays non-printing characters as visible characters
    -t                       displays tab as ^I
    -e                       displays enter as $

!!! sh -xv <command...>      for troubleshooting, if a command fails, you can see where exactly it failed in the command script!!!
                             (sh -xv exportvg rootvg)

dd if=/dev/zero of=/home/user/bb/4GB_file bs=1m count=4000  it creates a 4GB file
lmktemp <filename> <size_in_bytes>   it creates a file with given size

alias dir='ls'               creates an alias   
unalias dir                  removes an alias
set - unset

df -g | awk '{sum = sum + $3} END {print sum}' it sums up the fs in gigabyte (by the 3rd column)
for i in `ls -l | grep old | awk '{print $9}'` ;  do du -sk $i; done | awk '{sum = sum + $1} END {print sum}'

generating random passwords:
dd if=/dev/urandom bs=16 count=1 2>/dev/null | openssl base64 | sed "s/[=O/\]//g" | cut -b1-8

25 comments:

prabaharan said...

Hi google
Need assistance
I am trying to install wireshark in aix. Need assistance

As advised i have done all the steps. But still i am getting same error

After running updtvpkg

opt/wireshark>wireshark
exec(): 0509-036 Cannot load program wireshark because of the following errors:
0509-150 Dependent module libgtk-x11-2.0.a(libgtk-x11-2.0.so.0) could not be loaded.
0509-022 Cannot load module libgtk-x11-2.0.a(libgtk-x11-2.0.so.0).
0509-026 System error: A file or directory in the path name does not exist.
wireshark binary around 1406 rpm
server:/opt/wireshark>ls -l |wc -l
1406

aix said...

Hi, I would check if the mentioned library (libgtk-x11-2.0) really exists.
Or you can check this as well: http://publib.boulder.ibm.com/infocenter/javasdk/v5r0/index.jsp?topic=%2Fcom.ibm.java.doc.user.aix64.50%2Fuser%2Flimitations.html

Anonymous said...

You have a typo in the FIND stanza. In the line beginning with "-size +10000c", change 1000 to 10000.

-Paul

Anonymous said...

Oops, after editing out my snarky comment in my previous comment (since I'm new here), I forgot to say "great blog and AIX resource" !!

-Paul

aix said...

Hi Paul, thanks for you feedback, I have updated the mentioned line. Happy to hear you like this blog :)

-Balazs

Unknown said...

rpm -Uvh httpd-2.2.8.aix5.1.rpm install the rpm package

rpm -Uvh --force *.rpm
rpm -Uvh --force --nodeps does not check dependency

rpm -Uvh ---> is for upgrade the package i hope, corrct me if i am wrong

aix said...

Hi, yes and no :)
This is written in man page for "rpm -U":
"This upgrades or installs the package currently installed to a newer version. This is the same as install, except all other version(s) of the package are removed after the new package is installed."

I used "-U" to install new packages, but you are right in can be misleading so I changed it to "-i"

Anonymous said...

Hi,
i can see the history of cmds ran by the individuals in the home directory .sh_history.in which file can we see the history of cmds ran by the user after he switch as root by sudo su - root?

aix said...

Hi, commands are saved in the .sh_history of the actual user. If you change user with "su", the commands followed after the change will be saved in the sh_history of the new user.

Prasath said...

Hi sir, i new for AIX. ur blog is very useful for me. thanks alot...

aix said...

:-)

Anonymous said...

Excellent and educational blog. I've learned alot from this blog. Thanks

aix said...

:-)

vinod chauhan said...

its very useful

Anonymous said...

HI Aix,
Thanks for the sharing each and every inputs on each topyic....Some of them are not covered.So,plz kindly add some more filesystems cleared spaces like /,/usr(is not proper),/tmp

Thanks in Advance.

aix said...

Hi, some description about filesystem clearing can be found here: http://aix4admins.blogspot.hu/2011/05/superblock-in-jfs-superblock-is-first.html. /tmp should be temporary filesystem so no permanent data should be contained there.

Anonymous said...

Hi AIX,
I am new to this blog. Just gone through some pages and found it very useful. Excellent blog. Thank you very much!!!!!!!!!!!

- Nitin

Anonymous said...

grt work

sheik said...

u r blog is so super compare ....compare to all ...people are said dont compare to every one ...but ur superb.................

aix said...

Thanks :-)

Anonymous said...

great

sam63 said...

For such issues, you can use Long Path Tool, it really works good I will say.

Anonymous said...

Hello

grep -A and grep -B are not working in AIX 6100-09.
cat file.txt|grep -A1 'Generating'
grep: illegal option -- A
grep: illegal option -- 1
usage: grep [-r] [-R] [-H] [-L] [-E|-F] [-c|-l|-q] [-insvxbhwyu] [-p[parasep]] -e pattern_list... [-f pattern_file...] [file...]

Thanks

Unknown said...

Information on this site is very useful and super..

Hitesh said...

Do we have command to check the BIOS version for AIX directly ?