This shows you the differences between two versions of the page.
how_to [2011/12/21 19:35] k2patel [Building Software RAID] |
how_to [2020/08/10 02:35] |
||
---|---|---|---|
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. | ||
- | |||
- | <code mysql> | ||
- | mysqldump -u[USERNAME] -p[PASSWORD] --add-drop-table --no-data [DATABASE] | grep ^DROP | mysql -u[USERNAME] -p[PASSWORD] [DATABASE] | ||
- | </code> | ||
- | |||
- | |||
- | ==== 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> | ||
- | |||
- | ==== 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. | ||
- | |||
- | <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> | ||
- | |||
- | ==== 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> | ||
- | |||
- | ==== 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" ) | ||
- | <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> | ||
- | |||
- | **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.!! |