Here I have tried to list the commands that are useful for us (sys admins) but we still tend to forget. Listed here are a bunch of unix commands.
-> change file date stamptouch -t 199906042020 filename-> move partitionsufsdump 0f - /dev/rdsk/c0t0s0s0 | (cd /home; ufsrestore xv -)-> lay down file system with 1% minfree and inode density newfs -m1 -i81920 /dev/rdsk/c0t0d0s0-> check file systemfsck /dev/rdsk/c0t0d0s0Q: starting sybase login as sybase, run:./install/RUN_SYBASEQ: logging in as sybasesa isql -U sa-> dump a partition and pipe to gzip. Watch > 2GB limitufsdump 0f - /home | gzip - >/tmp/home.dump.gz-> rewind offline a tapemt -f /dev/rmt/0 rewoffl-> only allow 300MB for user /tmp access swap -/tmp tmpfs - yes SIZE=300M-> verbose interactive restoreufsrestore -ivf /dev/rmt/1-> remove a printer from a classlpadmin -p level5-line1 -r level5-line-> truss a commandtruss --f --o /tmp/log.txt-> [DB] feed a script into sybaseisql -Urfe_xfer -Uuser -Ppassword -isqlscript >>blah.txt-> make a printer classlpadmin -p level5-line1 -c level5-line-> remove level2-line2 printer from printer class level2-linelpadmin -p level2-line2 -r level2-line-> add level2-line3 to printer classlpadmin -c level2-line -p level2-line3-> [DB] how to change your password in isqlsp_password password, password-new-> move a directorytar cf - ./games | (cd /tmp; tar xvBpf - )-> [DB] run a sybase script, and dump to file $ISQL -i$SCRIPTFILE -U$USER -D$DATABASE -P$PASS_ENC >> $SCRIPTLOGFILE -> move a directory to another servertar cf - ./games | rsh brucey cd /tmp; tar xvBpf --> check for SUID SGID filesncheck -F ufs -s /dev/dsk/c3t0d0s-> remove core filesfind / -name core -exec rm -f {} ; -o -fstype nfs -prune-> rebuild man pagescatman -w -M man-page-directory or /usr/lib/makewhatis-> vi command to show special characters :set list-> adding an accountuseradd -u 120 -g dls -d /apps/dls -s /bin/ksh -c "comment" -m dls-> create a mysql databasemysqladmin -uroot -ppassword create ebs-> starting mysql database/etc/rc.d/init.d/mysql.server start /usr/local/bin/safe_mysqld-> Invoke CPAN module installperl -MCPAN -eshell-> dump to zipufsdump 0f - /filesystem | /opt/local/gzip - > /tmp/dump.gz-> shutdown mysql databse/usr/local/bin/mysqladmin shutdown -ppassword /etc/rc.d/init.d/mysql.server stop-> test the loading of a module PERLDLDEBUG=255perl -e .use CGI;.-> shows open filesfuser -cu /-> Writing a Daemon: 1. edit /etc/services add service and port. 2. edit /etc/inetd.conf add in: edwardd stream tcp nowait root /bin/sh /bin/sh /home/sextone/bin/SERVER.mine 3. kill -HUP inetd.conf -> how to mount a file systemmount /dev/dsk/c3t0d0s4 /apps/data/easysoft/DEVT-> look at sar logsar -f /var/adm/sa/sa24-> write file checksums and sizecksum filename-> show storage array info ssaadm display /dev/rdsk/c1t5d2s0 -> show all disks on device d luxadm display d -> examine for a specific OS finerprintnmap -sS -p 80 -O -v = examine OS-> show print jobs/usr/ucb/lpq -Plevel6-> Scan for known ports. log it. do OS scan.nmap -sS -F -o foo.log -v -O www.foo.com//24 =-> show status of printer/usr/ucb/lpc status-> make a swap file:dd if=/dev/zero of=swapfile bs=1024 count=65535 mkswap ./swapfile chmod 600 ./swapfile swapon ./swapfile-> show open files for processlsof -p PID-> show open files for all TCP connectionslsof -iTCP-> show open files for internet addresslsof -iTCP@10.20.2.9-> as abovelsof -i @10.20.2.122-> examine tcp portslsof -iTCP@sarah:1-50000-> show open files for user.lsof -u username-> show processes that has the file in use.lsof /apps/cms/ECMS-Server-> show open files and retry every 5 secondslsof -p process-id -r 5-> mount a floppymount -t vfat /dev/fd0 /mnt/floppy-> check here for debugging processes and errno.h for errors /usr/include /usr/include/sys /usr/include/sys/errno.h -> scp a whole directory, preserve modssudo scp -prv devel webadmin@203.19.123.140:/home/httpd/cgi-bin-> take processor 2 and 3 offline.psradm -f 2 3-> show processor stats verbose.psrinfo -v-> how to skip grant tables in mysql (over ride security)/usr/local/libexec/mysqld -Sg-> how to feed in an SQL program mysql rm all files in directoriesfind . -type f -exec rm {} ;-> dump packets to a capture filesudo snoop -o /tmp/tcp.txt cp-> backup one linertar cvf - /home/ebs | gzip - > ebs.tar.gz-> Look at selected packets in capture filesudo snoop -i /tmp/tcp.txt-> unzip and pipe to tar gzip -dc watch packets from two servers.snoop sarah brucey-> enable ip masquerading/sbin/ipchains -P forward DENY /sbin/ipchains -A forward -s 10.100.100.100/8 -j MASQ-> view su log filecat /var/adm/sulog-> establish a default router or gateway. echo "sagacity.com" > /etc/defaultrouter echo "10.100.100.100 sagacity.com sagacity" >> /etc/hosts change /etc/nsswitch.conf so that hosts has files, dns edit resolv.conf put in search . nameserver 203.7.132.98 -> turn off automounter on /export/home. vi /etc/auto_master, comment out /export/home -> configuration file for sudoers /opt/local/etc/sudoers -> building ssh-1.2.27 on x86Solaris2.6 needed a few things: /usr/openwin/bin in path /usr/xpg4/bin in path declare AR="/usr/xpg4/bin/ar" declare NM_PATH="/usr/xpg4/bin/nm" -> snoop network packets and get size and time stamp entries.snoop -S -ta empa1-> access perl CPANperl -MCPAN -e shell install DBI-> search for no password entries and lock all accounts.for i in passwd -sa | grep NP | awk .{print $1. do echo "locking $i?? passwd -l $i done-> delete from a tartar -delete -f fsbackupSunday.tar home/ebs/tmp-> Example on backing up files to tape. Must specify non rewinding, else you will over-write the files.for file in ls do echo "sending $file to tape..." echo date tar cvpf /dev/rmt/0n $file done-> making/adding a partition. 1. use fdisk to make a parition. 2. mkfs -t ext2 -c /dev/hda11 3. mount -t ext2 /dev/hda11 /opt2 4. update /etc/fstab -> rebuild the windex filecatman -w -M /usr/share/man-> execute tar on remote host sarah and send tarball to standard output, which becomes standard input for tar xvf - and the file gets dumped locally, in this case on crawl. you have to cd to dir before tar or else you will include path in tarssh maggie "cd $DIRNAME; tar cvf - $BASENAME" | (cd $TPATH; tar xvf - )-> dump a remote filesystem and send it to local tape drive.ssh --x $fw /usr/sbin/ufsdump 0cf - $fs | dd obs=63k of=$TAPE-> encrypt filename 1 and output to 1.crypt filecrypt 1.crypt ; rm 1-> decrypt filename 1.crypt and stdout to screen crypt send a file to tape tar cvpf /dev/rmt/0 filename -> quicker way to search and replace in vi :%s/existing/new/g-> shows where and which shared library files an application uses.ldd binary-> shell script stuff: repeat a command 100 timesx=100 while [ $x -gt 0 ] do command x=$(($x-1)) done-> Something very important to remember about partitions It is important to note that Cylinder 0 contains the disklabel, which contains the partition table. A normal filesystem can be placed starting at Cylinder 0, since it will not touch the disklabel. If you lay down a raw device, for a database, over Cylinder 0, then you will completely lose all your partitions. You will then have to restore the disklabel, and backup from tape if you happen to do this. -> move a partitionfind . |cpio -pdm /apps-> cron structure min hour day-of-month month weekday command -> PatchDiag Tool. Get patches from: http://sunsolve.sun.com/private-cgi/patchpage.pl patchdiag.xref is available at: Sun's Website /opt/local/bin/patchdiag -x /opt/local/lib/patchdiag.xref > patchdiag.uname -n -> command showing system parameters/usr/sbin/sysdef-> Get Ambient Temperature of Server/usr/platform/SUNW,Ultra-4/sbin/prtdiag -v-> good ps formatting showing percent cpu first.ps -edf -o pcpu,pid,user,arg-> full details on ps/usr/bin/ps -A -o user,pid,pcpu,pmem,vsz,rss,tty,s,stime,time,args-> chown the hidden files as well.find . -print -exec chown -R sextone:staff {} ;-> The nsradmin command is a command-line based administrative program for the NetWorker system. Normally nsradmin monitors and modifies NetWorker resources over the network. /usr/sbin/nsr/nsradmin -> Spray a server -c number of packets -d delay in microseconds -l pakcet size in bytes /usr/sbin/spray -c 1 -d 20 -l 4096 maggie -> Turn on bold. bold=tput smso offbold=tput rmso echo "${bold}You must be the "root" user to run this script.${offbold}" -> good way to send a dir to tape tar cf /dev/rmt/0n directory -> example of bringing up an interface ifconfig hme0:1 inet 10.2.25.52 up -> show all connections netstat -f inet -> rpcinfo makes an RPC call to an RPC server and reports what it finds. rpcinfo -b 390109 2 | sort -u -> rewind a tape fast show loaded modules /usr/sbin/modinfo -> find world readable files and dirs find / -type d -perm -2 -print find . -type f -perm -2 -print -> adding in a boot alias, eg: boot sarahroot1 -s nvalias sarahroot1 /sbus@1f,0/sunw,fas@e,8800000/sd@9,0:a -> clever way to archive tar cvf - find . -print >/tmp/dumpfile.tar tar xvf - tee to a file echo "Start Date/Time: date" | tee -a $LOG_FILE -> read a snoop file snoop -i anz-telnet.snoop -> write a snoop log (this will count the number of connections, which is pretty neat). snoop -osnoop.log sarah -> set default run level. 5 for gui. /etc/inittab -> show all exported filesystems showmount -e crawl -> shows all configurable variables for tcp interface. sudo ndd -get /dev/tcp - ? eg: sudo ndd -get /dev/tcp tcpconnreqmaxq 128 ndd /dev/arp ? ndd /dev/ip ? ndd /dev/tcp ? ndd /dev/udp ? ndd /dev/icmp ? -> set sticky bit on group files, only the owner can change the mode. -> the +l is mandatory file and record locking while a program -> is accessing that file. chmod g+s,+l file -> print duplex landscape 4 qudrant printing mpage -t -l -4 -> install a patch installpatch . -> check to see if a patch has been installed showrev -p |grep package name -> unzip, untar in a /tmp directory zcat 104708-16.tar.gz | ( cd /tmp; sudo tar xvf - ) -> check out revision level on ssa controller /usr/sbin/ssaadm display controller -> unzip and untar a file without having to create an intermediate tar file sudo gzip -dc /tmp/270599/post-EOD.tar.gz |tar xvf - -> selectively extract from a tar archive tar xvf /tmp/iona.tar ./iona/.sh_history -> send a bunch of files to tape tar cf /tmp/rules.tar ruleb* objects.C *.W -> examine section 5 of man man -s 5 signal -> shows signals and definitions of structures, eg sigaction /usr/include/sys/signal.h -> location of the limits file on solaris /usr/include/limits.h -> send an attachment via email from command prompt uuencode file.tar.gz file.tar.gz | mailx -s "backup?? root@crawl -> zero a file cat /dev/null > isam.log -> good way to restore from cdrom a binary file zcat running su as a user then ssh su - dls-PROD -c "/opt/local/bin/ssh drp-stagger "cd /tmp; /bin/ls" " -> verify a newfs format sudo newfs -Nv /dev/md/dsk/d96 -> making lost_found. must be 8192 bytes in size. 1. mkdir ./lost+found 2. chown root ./lost+found 3. chgrp root ./lost+found 4. chmod 700 ./lost+found. 5. cd ./lost+found nofiles=0 6. while [ "$nofiles" -le 650 ] ; do ; /usr/ucb/touch $nofiles ; nofiles=expr $nofiles + 1 ; done -> execute lynx lynx -cfg /usr/lib/lynx.cfg -> sed search example sed ./Sep 25/!d; /castill/!d. /var/log/syslo ->should only be used at the EEPROM boot -r -> should be used at single user mode reboot - -r -> should be used in multiuser mode touch /reconfigure -> performing a remote dump find MFASYS |cpio -oc |gzip -c |ssh brucey -l chaup dd obs=18k of=/dev/rmt/0n * to extract - cd /ssa/emphasys/sybase/dump dd ibs=18k if=|gunzip -c |cpio -idc -> boot block located here. /usr/platform/uname -i/lib/fs/ufs -> getting a server on the network add hosts entry for IP address clear configs: ifconfig pe0 unplumb ifconfig pe0 10.20.2.27 netmask 255.0.0.0 up route add default 10.20.0.1 1 verify the routing table: netstat -rn add resolv.conf entry: domain rabobank.com.au nameserver 192.192.192.252 edit /etc/nsswitch.conf change hosts to files, dns lesson here is to unplumb interface, and let ifconfig setup the routing. if you specify an ip address and a netmask it will manage the routing and the broadcasting. -> find all, files associated with PID 22240 /usr/proc/bin/pfiles 22240 find file based on inode find -i number "ncheck -i number -> good redirection example ./a.out trash -> synchronize files from one server to another. This is useful for synchronizing database dump files, binary files, etc. This is definitely a powerful tool. rsync -avz -e ssh -rsync-path="/usr/local/bin/rsync" pwd myhost.com:/home/ebs/public_html -> Example Awk Script run with awk -f/tmp/1.awk /etc/group BEGIN { FS = ":" } { print $1 | "sort" } { nlines++ } END { print nlines } -> awk example. awk ./#/ {print "Got a comment"}. /etc/hosts -> delete every 2nd field in file awk .{$2= ""; print}. datafile > datafile.new -> Setting Prompt PS1="hostname($LOGNAME)->" mount syntax mount 10.0.20.41:/mnt/cdrom /mnt/cdrom ldapsearch syntax ldapsearch -h mainldap -b 'o=domainname.com,c=us' cn="*" ldapmodify syntax ldapmodify -h masterldap -D 'cn=Directory Manager,o=domainname.com,c=US' -r -f /tmp/user.ldif -w "password123" ldapadd syntax ldapadd -f user.ldif -D 'cn=Directory Manager,o=domainname.com,c=US' -w "password" ldapdelete syntax ldapdelete -f martin.ldif -D "cn=Directory Manager,o=domainname.com,c=US" -w "password" sendmail debugging sendmail -bt -d0.1,21.12 truss -fae -o /tmp/truss.log -p Count System Calls truss -c Debugging processes in Linux: strace strace -a80 -f strace -a80 -f -p manually setting date/time date 07091427.00 Syntax: (mmddhhmm.ss) make a large file (linux) dd if=/dev/zero of=bigfie bs=1024 count=65536 (sun) mkfile bigfile 65m count number of open files lsof | awk '{ print $1 }' | uniq -c | sort -n | awk '{print $1}' | awk ' BEGIN { a=0; } {a+=$1;} END {print a; }' apache bench marking /usr/sbin/ab -n 100 -c 100 http://register.domainname.com:80/registe/index.ecgi using dtterm with ssh, $1 is the hostname argument, eg: ./go va5-prod-101 dtterm -geometry 80x50 -n $1 -title $1 -bg $BG -fg $FG -cr $CR -sb -aw -e /usr/local/bin/ssh.binary $LOGNAME@$1 & global search and replace in vi :%s/oldstring/newstring/g Using php to md5 encrypt echo "" | php -q delete all ldap entries $ ldapsearch -h mainldap -b 'o=domainname.com,c=us' cn="*" >/tmp/all.ldif $ ldapdelete -c -f /tmp/all.ldif -D "directory Manager,o=domainname.com,c=us" -w password run again the ldapdelete, this will remove non-leaf nodes. it is a hack but it works. testing radius logins Usage: radtest login passwd server:port nas_port_id secretkey radtest ebs password localhost localhost testing123 Writing to HPOV opcmsg sev=normal app=Apache MsgGroup=Web_Apps node=va5-prod-101 msg_text=Your message goes here. sev=normal|warning|minor|major|critical LDAP and STDIN ldapsearch -h mainldap -b 'o=domainname.com,c=US' cn=ed_904 | ldapdelete -c -D "cn=Directory Manager,o=domainname.com,c=US" -w secret_password ldapsearch -h mainldap -b 'o=domainname.com,c=US' cn=ed_904 | ldapdelete -c -D "cn=Directory Manager,o=domainname.com,c=US" -w secret_password Use -c to continue if errors are detected. Oracle: deleting a username sqlplus register ; SQL> exec maint.del_user('USERID'); Oracle: Decryption select reg_crypt.pwd_decrypt(screen_pwd) from screen_name where screen_name='username'; select reg_crypt.pwd_decrypt(screen_pwd) from screen_name where screen_name='username'; select reg_crypt.pwd_decrypt(security_question_answer) from screen_name where screen_name='username'; select vbl_crypt.cc_decrypt(credit_card_num) from vbl_user_creditcard; select reg_crypt.pwd_decrypt(CENTER_PASSWORD) from CENTER where CENTER_PUBLIC_SCREENNAME='username'; LDAP Information ldapsearch -s base -b cn=monitor 'objectclass=#' MPortal: fix mysql links for web guide management use portal; select * from web_title where title_id=16 and title_code=0; update web_title set title_code=11 where title_id=16 and title_code=0; keyword search all files and print file names and date/size find . -type f -exec grep -l search_word {} ; | xargs ls -al remove encrypted key from cert ( cd /etc/httpd/conf/ssl.key && openssl rsa -in home.domainname.com.key -out home.domainname.com.key) broadcast ping for host in `ping -b 10.0.101.255 -c 2 | awk '{print $4}' | grep "^10" |sed s/.$//g`; do echo -n "$host "; nslookup $host 2>/dev/null | grep Name; echo ;done Find all files a process tries to open truss -t !all -t open ldapsearch operators AND operator: ldapsearch -h mainldap -b 'ou=1,o=domainname.com, c=US' "(&(suffixflag=0)(loginname=eval*))" OR operator: ldapsearch -h mainldap -b 'ou=1,o=domainname.com, c=US' "(|(loginname=thanurak)(loginname=ebs))" Adding a NewLine character with sed. Use a backslash ldapsearch -h mainldap -b 'ou=1,o=domainname.com, c=US' cn=ebs | sed s/suffixflag=0/userid=000000000000/g Adding a New field to existing LDAP database (this will add new field: foo=bar ldapsearch -h masterldap -b o=domainname.com,c=us cn=loopy | awk '{print} /suffixflag=0/{print "foo=bar"}' | ldapmodify -r -h masterldap -D "cn=Directory Manager, o=domainname.com, c=US" -w xxx Continuing a process If /proc/$PID/status ever shows a State: T (Stopped), then start it with this signal: kill -SIGCONT pid Oracle shutdown export ORACLE_SID ; sqlplus internal ; select * from v$database; shutdown immediate; Interesting Oracle views v$sga; v$session using uuencode for file transfer $ uuencode filename filename | mail esexton@sun1-noc eg: uuencode tnsnames.ora tnsnames.ora | mail esexton@sun1-noc tar cvf - * | uuencode backup.tar | mail esexton@sun1-noc (linux) $ tar zcvf - * | uuencode backup.tar.gz | mail esexton@sun1-noc (sun) $ tar cvf - * | gzip - | uuencode backup.tar.gz | mailx esexton@sun1-noc LDAP protocol 2 specific commands LDAP protocol 2 query: ldapsearch -LLL -P2 -x -h mainldap.domainname-inc.com -b 'o=domainname.com, c=us' cn=guest ldapdelete -x "cn=j2, ou=1, o=domainname.com, c=US" -w ldapsearch -x -LLL -b 'o=domainname.com, c=US' cn=j2 ldapadd -x -f newadd1.ldif -D "cn=Directory Manager,o=domainname.com,c=us" -w "" Tailing tcpdump tcpdump -l udp > dat & tail -f dat mysql date select SELECT * FROM `connection` where login_time > "2002-12-01 00:00:01" RPM extract commands Get a content listing: rpm2cpio web-programs.rpm | cpio -it Extract Specific File: rpm2cpio web-programs.rpm | cpio -idm Extract Entire contents: rpm2cpio web-programs.rpm | cpio -ivd Sendmail Testing aliases and routing. echo "3,0 nreynolds@domainname.com" | sendmail -bt -d60.1 echo "3,0 nreynolds@domainname.com" | sendmail -bt -d60.1 -d21.12 use sed to translate a space to a newline sed 's/ / /g' filename Bind version nslookup -q=txt -class=CHAOS version.bind. 0 dig @host version.bind chaos txt named -v Query MX record nslookup -q=mx server-name freebsd pkg_add package.tgz MySQL Too many indexes on a table will cause delete operations to be slow. Linux Route route add -net 10.0.19.0 netmask 255.255.255.0 gw 10.0.101.4 /etc/sysconfig/static-routes: eth0 net 10.0.19.0 netmask 255.255.255.0 gw 10.0.101.4 route del -net 10.0.19.0 gw 10.0.101.4 netmask 255.255.255.0 -> Restarting SSHD on Solaris 10svcadm restart svc:/network/ssh:default