Linux: df: cannot read table of mounted file systems

“df -l” returned an error: “df: cannot read table of mounted file systems”. I looked at my “/etc/mtab” file – empty! I did a “fdisk -l” and saw my partitions there, then proceeded to create a new mtab from my /proc/mount:
grep -v rootfs /proc/mounts > /etc/mtab

Error message: no space left on the device!

Ran out of room… my SQL dumps are taking a lot of space 🙁 Freed up some space and executed the command again – df is now returning what it’s supposed to return.

VMware – Linux: OS cannot mount /dev/sd* after a virtual machine is converted – Waiting for device /dev/sd* to appear… not found – fall back

This happened when I created a SLES 11 VM with VMware Workstation and then moved to to ESX for production. Problem was that VMware Workstation used LSILogic SCSI drives to emulate my disks, but for some reason it wasn’t made clear to ESX by VMware Converter during conversion.

To fix this browse to your datastore and download your guest’s configuration file <vmname>.vmx to your desktop (or use your root access and open it in vi through ssh). Open it with a text editor and add the following line above your SCSI devices:
scsi0.virtualDev = "lsilogic"

So the whole SCSI device section should look like this:
scsi0.present = "true"
scsi0.sharedBus = "none"
scsi0.virtualDev = "lsilogic"
scsi0:0.present = "true"
scsi0:0.fileName = "disk1.vmdk"
scsi0:0.deviceType = "scsi-hardDisk"
scsi0:1.present = "true"
scsi0:1.fileName = "disk2.vmdk"
scsi0:1.deviceType = "scsi-hardDisk"

Copy the config back to your datastore and start guest OS. You will be asked to confirm changes during post – answer yes to changes.

Disclaimer: Make sure you have a backup before making any change.

Linux: Release port 8080 after stopping Tomcat – Port 8080 in use by Java

It’s past 3 AM and I finally found out why after stopping my Tomcat server I’m unable to successfully start it again. It seem like Java process won’t go away. To get around that I added the following line to my Tomcat shutdown.sh script:
killall -9 java
and all is well now. Still unorthodox, but works for me. I will write a script to find the process and kill it properly later on.