User Tools

Site Tools


how_to

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
how_to [2016/07/19 20:54]
k2patel
how_to [2016/12/08 19:00]
k2patel [Run single command parallel'y with diff values]
Line 1: Line 1:
 +====== How to ..... ======
  
 +==== .gvfs ====
 +
 +How to get rid of .gvfs and what it is.
 +
 +What it is
 +GVFS is a replacement for GnomeVFS, the GNOME Virtual File System
 +
 +{User_home}/​.gvfs is used as a mount point for the Gnome gvfs for user.
 +It stays mounted even when user is logged off.You need to umount ​ it prior to delete it.
 +Use following command to unmount
 +
 +<code bash>
 +umount -fl /​home/​xyz/​.gvfs
 +</​code>​
 +
 +==== How to drop all table from database (mysql) ====
 +
 +
 +
 +To drop all the table in the mysql database - use the following command.
 +<WRAP prewrap>
 +<code mysql>
 +mysqldump -u[USERNAME] -p[PASSWORD] --add-drop-table --no-data [DATABASE] | grep ^DROP | mysql -u[USERNAME] -p[PASSWORD] [DATABASE]
 +</​code>​
 +</​WRAP>​
 +
 +==== How to list pear using php ====
 +
 +
 +First install PEAR_Info
 +
 +<code bash>
 +pear install PEAR_Info
 +</​code>​
 +
 +Than create file pearinfo.php with following content.
 +
 +<code php>
 +<?php
 +require_once '​PEAR/​Info.php';​
 +$info = new PEAR_Info();​
 +$info->​display();​
 +?>
 +</​code>​
 +
 +Now browse the file in your favorite browser.
 +
 +==== How to list Installed CPAN Modules ====
 +
 +<code perl>
 +#​!/​usr/​bin/​perl
 +
 +use ExtUtils::​Installed;​
 +my $instmod = ExtUtils::​Installed->​new();​
 +foreach my $module ($instmod->​modules()) {
 +my $version = $instmod->​version($module) || "???";​
 +       print "​$module -- $version\n";​
 +}
 +</​code>​
 +
 +==== Watch output of command with refresh ====
 +
 +This can me usefull to monitor command with no refresh. like vmstat, iostat
 +
 +<code bash>
 +watch -n 3 vmstat -D
 +</​code>​
 +
 +
 +==== Force Change password next login ====
 +
 +<code bash>
 +chage -d 0 <​Username>​
 +</​code>​
 +==== Setting up Multiple ip using single file ====
 +
 +You can add IP range to server using following way.
 +
 +Range file :\\
 +replace "​eth0"​ with your nic name in file name.\\
 +CLONENUM_START - change based on range you add to NIC.\\
 +in respect of below configuration next CLONENUM_START for eth0 is "​6"​\\
 +
 +<code bash | /​etc/​sysconfig/​network-scripts/​ifcfg-eth0-range0>​
 +IPADDR_START=192.168.1.25
 +IPADDR_END=192.168.1.30
 +CLONENUM_START=0
 +</​code>​
 +
 +
 +==== Setting up Multiple Block of IP to single NIC/server ====
 +
 +In normal case if you add diff. block of IP only one block will work.\\
 +As gateway for all block might be different.\\
 +In that case you need to add following line to config.\\
 +<code bash | /​etc/​sysconfig/​network >
 +GATEWAYDEV="​eth0"​
 +</​code>​
 +NOTE : replace eth0 based on your NIC name
 +==== Getting Old Version of PHP package from cvs ====
 +From : [[http://​php.net]]
 +
 +Setting up cvs client. (Recommended)
 +
 +<code bash | ~/​.cvsrc>​
 +cvs -z3
 +update -d -P
 +checkout -P
 +diff -u
 +</​code>​
 +
 +Login to cvs server using anonymous login\\
 +**password : phpfi**
 +<code bash>
 +cvs -d :​pserver:​cvsread@cvs.php.net:/​repository login
 +</​code>​
 +
 +Download source from cvs.\\
 +Make sure you replace php_5_2_5 with your version need (e.g. php_4_0_3)
 +<code bash>
 +cvs -d :​pserver:​cvsread@cvs.php.net:/​repository checkout -r php_5_2_5 php-src
 +</​code>​
 +
 +Now you have clean version of sources on your machine.\\
 +In order to generate configure script you need to run following.
 +<code bash>
 +./buildconf
 +</​code>​
 +
 +To build package use following.\\
 +Replace versions with your checkout snap.\\
 +**makedist <​package>​ <​version>​**
 +<code bash>
 +sh makedist php 5.2.5
 +</​code>​
 +//
 +You just make your own distribution package.//
 +==== How to test UDP Connection ====
 +This is needed in many cases. Many services still use UDP port for Authentication / Certification for software.\\
 +You can test connection using nmap.
 +
 +<code bash>
 +# nmap -p [port] -sU -P0 [host name | ip address]
 +# nmap -p 234 -sU -P0 xx.xx.xx.xx
 +# nmap -p 543 -sU -P0 xx.xx.xx.xx
 +</​code>​
 +
 +Also you can use netcat
 +
 +<code bash>
 +nc -zu <ip> <​udpport>​
 +</​code>​
 +
 +
 +==== ip_conntrack:​ table full, dropping packet ====
 +
 +
 +I found myself with a server under normal load.\\
 +but, it no network connections initiated. and log is full of entry as below
 +
 +<code bash>
 +ip_conntrack:​ table full, dropping packet
 +</​code>​
 +
 +After searching on google found [[http://​kbase.redhat.com/​faq/​FAQ_45_11238.shtm | Redhat]] site for more details. \\
 +It seems server was running iptables, but it was under a very heavy load and also handling a high volume of network connections.\\ ​
 +Generally, the ip_conntrack_max is set to the total MB of RAM installed multiplied by 16.\\
 +However, this server had 2GB of RAM, but ip_conntrack_max was set to 65536:
 +
 +<code bash>
 +# cat /​proc/​sys/​net/​ipv4/​ip_conntrack_max
 +65536
 +</​code>​
 +
 +I have checked with few other server and all had ip_conntrack_max set to 65536.\\
 +I’m not sure seems default value to me.
 +
 +Now i have found my value using following:
 +
 +<code bash>
 +# cat /​proc/​sys/​net/​ipv4/​netfilter/​ip_conntrack_count
 +</​code>​
 +
 +and i have adjusted using following. about 8GB ram.
 +
 +<code bash>
 +# echo 131072 > /​proc/​sys/​net/​ipv4/​ip_conntrack_max
 +</​code>​
 +
 +But, above change is temporary to set value at boot do following.
 +
 +<code bash | /​etc/​sysctl.conf>​
 +net.ipv4.ip_conntrack_max=131072
 +</​code>​
 +
 +This should be it.
 +
 +==== Crontab with own php.ini and send result to mail ====
 +
 +If you need to run cron with your own php.ini and send result to mail use following.
 +<WRAP prewrap>
 +<code bash>
 +*/1 */2 * * * /​usr/​local/​bin/​php --php-ini /​srv/​www/​conf/​php.ini /​srv/​www/​public_html/​cron.php | /​usr/​bin/​mail -s "​Output of crontab"​ xyz@yahoo.com
 +</​code>​
 +</​WRAP>​
 +==== Exit Codes ====
 +At some point you feel like there is no exit code documentation and you want find you what should it return.\\
 +There is simple practical way to find exit code in linux.\\
 +<code bash>
 +echo $?
 +</​code>​
 +which determine what exit code was returned by a command. must be post run this after command.\\
 +following is simple example.\\
 +<code bash>
 +ls bcd
 +ls: bcd: No such file or directory
 +echo $?
 +2
 +</​code>​
 +Which as ls return "​2"​ serious trouble. file not found.\\
 +If 0 All OK.\\
 +You can post run with any command and find out what is the return code. This will help you as quick fix.\\
 +In logical programming you must have all the exit codes for best result.
 +
 +==== How to use serial console ====
 +
 +Here is the simple how to on using serial console.
 +
 +First find out how many serial device is connected.
 +<code bash>
 +dmesg | grep tty
 +</​code>​
 +Which should return following results.
 +<code text>
 +serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
 +serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
 +00:0a: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
 +00:0b: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A
 +</​code>​
 +On my machine it find only two ports.\\
 +so i am using "​[01]"​ for those two ports. if you have more add number like "​[012..]"​.\\
 +Now Initialize those ports.\\
 +<code bash>
 +setserial -g /​dev/​ttyS[01]
 +</​code>​
 +
 +You are all set.\\
 +Now connect to serial port using minicom.\\
 +<code bash>
 +minicom -o
 +</​code>​
 +
 +This works for me.
 +
 +==== How to grab External IP ====
 +I needed clean and most frequent access to find outgoing IP of servers.\\
 +So based on Environment variable i have developed small script. [[cgi_script_to_print_visitor_ip|script to grab visitor IP]] \\
 +which print your external IP.\\
 +
 +<code bash>
 +curl ip.k2patel.in
 +</​code>​
 +
 +NOTE : 
 +  * I do not track or log any request coming to above domain.
 +  * But in case of any excessive amount of request i might enable logging to block such activity.
 +==== Truncate on Linux ====
 +
 +Not sure what make truncate command to disappear from linux.\\
 +But it is/was really usefull tool. following is alternative way to reduce file size.\\
 +Command below will reduce size to 100MB, and it takes argument in bytes. replace according to your need. (replace bs=""​)
 +
 +<code bash>
 +dd if=/​dev/​null of=msyql_slow.txt seek=1 bs=104857600
 +</​code>​
 +
 +==== Removing Patch ====
 +
 +To remove applied patch use following command.
 +
 +<code bash>
 +patch -R
 +</​code>​
 +
 +
 +==== Preserve Custom nameserver ====
 +
 +To preserve custom nameserver while using DHCP you need to modify config file.\\
 +add or update following line.
 +
 +<code bash | /​etc/​dhcp/​dhclient.conf>​
 +prepend domain-name-servers 4.2.2.1,​8.8.8.8;​
 +</​code>​
 +
 +Redhat / Fedora
 +NM looks for /​etc/​dhclient-<​interface>​.conf then /​etc/​dhcp/​dhclient-<​interface>​.conf \\
 +and will merge the first found into the dhclient config files it produces.
 +==== Enable port below 1024 for all users ====
 +
 +NOTE : Please be aware it is not / never advisable.
 +
 +Now if you want java to use port below 1024 you can use following command.
 +
 +<code bash>
 +setcap '​cap_net_bind_service=+ep'​ /​usr/​bin/​java
 +</​code>​
 +
 +NOTE : It is only available on RHEL6/​CentOS6 and up 
 +
 +==== Building Software RAID ====
 +One of nice feature about software RAID is you can get good performance using it.\\
 +Here is the simple steps to follow to create software raid level 10.
 +
 +**Step 1** : Create Partition Assign //type - fd//
 +<code bash>
 +fdisk /dev/sdf
 +fdisk /dev/sdg
 +fdisk /dev/sdh
 +fdisk /dev/sdi
 +</​code>​
 +
 +**Step 2** : Create Raid Drive. ( this command will create "/​dev/​md10"​ )
 +<WRAP prewrap>
 +<code bash>
 +mdadm --create --level=10 --raid-devices=4 --spare-devices=0 --chunk=128 --layout=f2 /dev/md10 /dev/sdf1 /dev/sdg1 /dev/sdh1 /dev/sdi1
 +</​code>​
 +</​WRAP>​
 +
 +**Step 3**: Format Drive ( I am formatting for XFS ) 
 +<code bash>
 +mkfs.xfs /dev/md10
 +</​code>​
 +
 +** Moving Between Machine **
 +create if you don't have it already
 +
 +<note warning>
 +Do not keep or include UUID in destination System, Simply copy rest of the part leaving UUID behind.
 +</​note>​
 +
 +Source System :
 +<code bash>
 +mdadm --examine --scan > /​etc/​mdadm.conf
 +mdadm --stop /dev/md10
 +</​code>​
 +
 +Destination System :\\
 +Add / Create mdadm
 +
 +<code bash | /​etc/​mdadm.conf>​
 +ARRAY /dev/md10 level=raid10 num-devices=4 metadata=0.90 devices=/​dev/​sdg1,/​dev/​sdh1,/​dev/​sdi1,/​dev/​sdj1
 +</​code>​
 +
 +Now assemble it on new system.
 +<code bash >
 +mdadm --assemble --scan --verbose /dev/md10 /dev/sdg1 /dev/sdh1 /dev/sdi1 /dev/sdj1
 +</​code>​
 +
 +Mount /dev/md10 - Enjoy.!!
 +
 +==== ramfs on Linux ====
 +<note warning>​Do not confuse your self with tmpfs and ramfs as both are diff. entity</​note>​
 +
 +To create/​mount ramfs you can use following command.\\
 +Please make sure folder already exists.
 +
 +<code bash>
 +mount -t ramfs none /tmp/toall
 +</​code>​
 +
 +==== Reduce default tmpfs size ====
 +Default size of **/​dev/​shm** is almost 50% of your memory.\\
 +In order to reduce it to some optimal value you can update your /​etc/​fstab.\\
 +just add size variable in your option field : comma saperated : will do.
 +
 +<code bash>
 +tmpfs                   /​dev/​shm ​               tmpfs   ​defaults,​size=8g ​       0 0
 +</​code>​
 +
 +
 +==== Password Hashing Algorithm ====
 +
 +=== Display Hashing Algorithm on server ===
 +
 +<code bash>
 +authconfig --test | grep hashing
 +</​code>​
 +
 +=== Change Algorithm on server ===
 +
 +<code bash>
 +authconfig --passalgo=sha512 --update
 +</​code>​
 +
 +==== Changing encrypted file system password ====
 +
 +If you have encrypted partitions you can change password using following commands.
 +
 +<note warning>​Replace sda2 with your drive number</​note>​
 +
 +=== Check which key slot is occupied ===
 +
 +<code bash>
 +cryptsetup luksDump /dev/sda2
 +</​code>​
 +
 +=== Now add key to next free slot ===
 +
 +<code bash>
 +cryptsetup luksAddKey /dev/sda2
 +</​code>​
 +
 +=== Now remove / Disable Previous slot ===
 +
 +<code bash>
 +cryptsetup luksKillSlot /dev/sda2 0
 +</​code>​
 +
 +==== Check for Operation Windigo infection ====
 +<code bash>
 +ssh -G 2>&1 | grep -e illegal -e unknown > /dev/null && echo “System clean” || echo “System infected”
 +</​code>​
 +[[http://​news.softpedia.com/​news/​quot-Operation-Windigo-quot-Attack-Infects-10-000-Unix-Servers-Millions-of-PCs-at-Risk-432920.shtml?​utm_source=dlvr.it&​utm_medium=twitter|Ref.]]
 +
 +==== Creating patch for rpm ====
 +this can be used as '​%patch0 -p1 -b <​file_name>'​
 +<code bash>
 +diff -ru hdf-4.2.12-orig hdf-4.2.12-diff >| ../​SOURCES/​hdf-4.2.12.example.patch
 +</​code>​
 +
 +==== Configure option for Fedora / Redhat ====
 +replace amaya with your application etc...\\
 +This is usefull while compiling sources for systems
 +<WRAP prewrap>
 +<code bash>
 +../​configure -enable-system-raptor '​--build=x86_64-redhat-linux-gnu'​ '​--host=x86_64-redhat-linux-gnu'​ '​--program-prefix='​ '​--prefix=/​usr'​ '​--exec-prefix=/​usr'​ '​--bindir=/​usr/​bin'​ '​--sbindir=/​usr/​sbin'​ '​--sysconfdir=/​etc'​ '​--datadir=/​usr/​share'​ '​--includedir=/​usr/​include'​ '​--libdir=/​usr/​lib64'​ '​--libexecdir=/​usr/​libexec'​ '​--sharedstatedir=/​var/​lib'​ '​--mandir=/​usr/​share/​man'​ '​--infodir=/​usr/​share/​info'​ '​--exec_prefix=/​usr'​ '​build_alias=x86_64-redhat-linux-gnu'​ '​host_alias=x86_64-redhat-linux-gnu'​ '​--libexecdir=/​usr/​lib64/​amaya'​ '​--localstatedir=/​var'​ '​--datadir=/​usr/​share/​amaya'​ '​--sysconfdir=/​etc/​amaya'​ '​--with-logdir=$(localstatedir)/​log/​amaya'​ '​--with-pidfile=$(localstatedir)/​run/​amaya.pid'​
 +</​code>​
 +</​WRAP>​
 +
 +==== Run single command parallel'​y with diff values ====
 +<WRAP prewrap>
 +<code bash>
 +(echo "​http://​test.k2patel.in";​ echo "​http://​test.ornl.gov";​ echo "​http://​yahoo.com"​ ) | parallel 'ab -n 50 -c 50 {}'
 +</​code>​
 +</​WRAP>​
 +
 +==== Print yum variable value ====
 +<code python>
 +import yum
 +import pprint ​
 +
 +yvar = yum.YumBase()
 +pprint.pprint(yvar.conf.yumvar,​ width=1)
 +</​code>​
how_to.txt · Last modified: 2020/08/10 02:35 (external edit)