====== 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
umount -fl /home/xyz/.gvfs
==== How to drop all table from database (mysql) ====
To drop all the table in the mysql database - use the following command.
mysqldump -u[USERNAME] -p[PASSWORD] --add-drop-table --no-data [DATABASE] | grep ^DROP | mysql -u[USERNAME] -p[PASSWORD] [DATABASE]
==== How to list pear using php ====
First install PEAR_Info
pear install PEAR_Info
Than create file pearinfo.php with following content.
display();
?>
Now browse the file in your favorite browser.
==== How to list Installed CPAN Modules ====
#!/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";
}
==== Watch output of command with refresh ====
This can me usefull to monitor command with no refresh. like vmstat, iostat
watch -n 3 vmstat -D
==== Force Change password next login ====
chage -d 0
==== 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"\\
IPADDR_START=192.168.1.25
IPADDR_END=192.168.1.30
CLONENUM_START=0
==== 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.\\
GATEWAYDEV="eth0"
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)
cvs -z3
update -d -P
checkout -P
diff -u
Login to cvs server using anonymous login\\
**password : phpfi**
cvs -d :pserver:cvsread@cvs.php.net:/repository login
Download source from cvs.\\
Make sure you replace php_5_2_5 with your version need (e.g. php_4_0_3)
cvs -d :pserver:cvsread@cvs.php.net:/repository checkout -r php_5_2_5 php-src
Now you have clean version of sources on your machine.\\
In order to generate configure script you need to run following.
./buildconf
To build package use following.\\
Replace versions with your checkout snap.\\
**makedist **
sh makedist php 5.2.5
//
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.
# 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
Also you can use netcat
nc -zu
==== 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
ip_conntrack: table full, dropping packet
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:
# cat /proc/sys/net/ipv4/ip_conntrack_max
65536
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:
# cat /proc/sys/net/ipv4/netfilter/ip_conntrack_count
and i have adjusted using following. about 8GB ram.
# echo 131072 > /proc/sys/net/ipv4/ip_conntrack_max
But, above change is temporary to set value at boot do following.
net.ipv4.ip_conntrack_max=131072
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.
*/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
==== 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.\\
echo $?
which determine what exit code was returned by a command. must be post run this after command.\\
following is simple example.\\
ls bcd
ls: bcd: No such file or directory
echo $?
2
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.
dmesg | grep tty
Which should return following results.
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
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.\\
setserial -g /dev/ttyS[01]
You are all set.\\
Now connect to serial port using minicom.\\
minicom -o
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.\\
curl ip.k2patel.in
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="")
dd if=/dev/null of=msyql_slow.txt seek=1 bs=104857600
==== Removing Patch ====
To remove applied patch use following command.
patch -R
==== Preserve Custom nameserver ====
To preserve custom nameserver while using DHCP you need to modify config file.\\
add or update following line.
prepend domain-name-servers 4.2.2.1,8.8.8.8;
Redhat / Fedora
NM looks for /etc/dhclient-.conf then /etc/dhcp/dhclient-.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.
setcap 'cap_net_bind_service=+ep' /usr/bin/java
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//
fdisk /dev/sdf
fdisk /dev/sdg
fdisk /dev/sdh
fdisk /dev/sdi
**Step 2** : Create Raid Drive. ( this command will create "/dev/md10" )
mdadm --create --level=10 --raid-devices=4 --spare-devices=0 --chunk=128 --layout=f2 /dev/md10 /dev/sdf1 /dev/sdg1 /dev/sdh1 /dev/sdi1
**Step 3**: Format Drive ( I am formatting for XFS )
mkfs.xfs /dev/md10
** Moving Between Machine **
create if you don't have it already
Do not keep or include UUID in destination System, Simply copy rest of the part leaving UUID behind.
Source System :
mdadm --examine --scan > /etc/mdadm.conf
mdadm --stop /dev/md10
Destination System :\\
Add / Create mdadm
ARRAY /dev/md10 level=raid10 num-devices=4 metadata=0.90 devices=/dev/sdg1,/dev/sdh1,/dev/sdi1,/dev/sdj1
Now assemble it on new system.
mdadm --assemble --scan --verbose /dev/md10 /dev/sdg1 /dev/sdh1 /dev/sdi1 /dev/sdj1
Mount /dev/md10 - Enjoy.!!
==== ramfs on Linux ====
Do not confuse your self with tmpfs and ramfs as both are diff. entity
To create/mount ramfs you can use following command.\\
Please make sure folder already exists.
mount -t ramfs none /tmp/toall
==== 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.
tmpfs /dev/shm tmpfs defaults,size=8g 0 0
==== Password Hashing Algorithm ====
=== Display Hashing Algorithm on server ===
authconfig --test | grep hashing
=== Change Algorithm on server ===
authconfig --passalgo=sha512 --update
==== Changing encrypted file system password ====
If you have encrypted partitions you can change password using following commands.
Replace sda2 with your drive number
=== Check which key slot is occupied ===
cryptsetup luksDump /dev/sda2
=== Now add key to next free slot ===
cryptsetup luksAddKey /dev/sda2
=== Now remove / Disable Previous slot ===
cryptsetup luksKillSlot /dev/sda2 0
==== Check for Operation Windigo infection ====
ssh -G 2>&1 | grep -e illegal -e unknown > /dev/null && echo “System clean” || echo “System infected”
[[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 '
diff -ru hdf-4.2.12-orig hdf-4.2.12-diff >| ../SOURCES/hdf-4.2.12.example.patch
==== Configure option for Fedora / Redhat ====
replace amaya with your application etc...\\
This is usefull while compiling sources for systems
../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'
==== Run single command parallel'y with diff values ====
(echo "http://test.k2patel.in"; echo "http://test.ornl.gov"; echo "http://yahoo.com" ) | parallel 'ab -n 50 -c 50 {}'
==== Print yum variable value ====
import yum
import pprint
yvar = yum.YumBase()
pprint.pprint(yvar.conf.yumvar, width=1)
==== Disable Predictable interface name in RHEL / CentOS ====
Pass following during boot kernel command line.
net.ifnames=0