Category Archives: linux

Wipe and shutdown remote Linux server over SSH

Wiping and shutting down a headless linux server over SSH.

Copies zeros over the whole disk.

dd if=/dev/zero of=/dev/sdaX

Where sdaX is the device you want to wipe. Read discussion at security.stackexchange.

Since the shutdown command will be trashed by the wiping, we need to force shutdown in another way.

echo 1 > /proc/sys/kernel/sysrq
echo o > /proc/sysrq-trigger

Don’t try this at home.

Using screen for linux background processing

Perfect for long running batch jobs on a remote server over unreliable connections or if you want to bring your laptop home (instead of keeping that terminal running).

Log in and run
screen -t title_of_your_choice

Do the same thing again if you want to create another window.

All the following screen commands are preceeded by Ctrl-a (i.e. first press ctrl-a then the shortcut below)

  • 0-9 – switch to window by id
  • Ctrl-n – next window
  • Ctrl-a – previous window
  • d – quit screen (leaving it running)
  • k – kill window

The next day, log in as usual and attach to the screen session using

screen -x

Check the man page for screen for other options and shortcuts.

Installing GlassFish on Debian Etch or Ubuntu

I had to install GlassFish on an Debian Etch machine and here is how I did it (the purpose of these instructions is as a reminder to myself so I know what I did in case I have to do it again).

Install Java 5

First thing needed is Java 5. To be able to get Java 5 and other stuff, add contrib and non-free to each repository in /etc/apt/sources.list .

It should look something like this:

deb etch/updates main contrib non-free

deb etch main contrib non-free
deb-src etch main contrib non-free

Then simply run:
apt-get install sun-java5-jdk

Download GlassFish

Check the GlassFish website for the latest version and download it (URL may be different depending on version):


Install GlassFish

Install GlassFish by running:
java -jar -mx256M glassfish-installer-v2-b09.jar

For convenience it might be nice to move GlassFish to a version independent directory name and make symlink (will make future upgrades easier as well):

mv glassfish /opt/glassfish-v2ur2-b09
ln -s /opt/glassfish-v2ur2-b09 /opt/glassfish

Now setup GlassFish:

cd /opt/glassfish
/opt/glassfish/lib/ant/bin/ant -f setup.xml

If you get an permission error, make sure ANT is executable (note that this is just a standard ANT, if you already have ANT you may use that one instead):

chmod u+x /opt/glassfish/lib/ant/bin/ant

Start the application server by running:

/opt/glassfish/bin/asadmin start-domain

Verify that you may reach http://localhost:8080 and http://localhost:4848 (replace localhost if server is somewhere else).

Finally it might be a good idea to change the default admin password:

/opt/glassfish/bin/asadmin change-admin-password --user admin

Create init script

Based on the /etc/init.d/skeleton I created the following init-script:

#! /bin/sh
# Provides:          glassfish
# Required-Start:    $local_fs $remote_fs
# Required-Stop:     $local_fs $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: glassfish initscript
# Description:       Simple initscript for GlassFish App server

# Do NOT "set -e"

# PATH should only include /usr/* if it runs after the script
DESC="GlassFish Java EE5 App server"

# Load the VERBOSE setting and other rcS variables
. /lib/init/

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions

# Function that starts the daemon/service
        $ASADMIN start-domain \
                || return 1

# Function that stops the daemon/service
        $ASADMIN stop-domain \
                || return 1

case "$1" in
        [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
        case "$?" in
                0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
        log_daemon_msg "Restarting $DESC" "$NAME"
        sleep 10
        case "$?" in
                case "$?" in
                        0) log_end_msg 0 ;;
                        1) log_end_msg 1 ;; # Old process is still running
                        *) log_end_msg 1 ;; # Failed to start
                # Failed to stop
                log_end_msg 1
        echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
        exit 3


Save it as glassfish, then run:

cd /etc/init.d
update-rc.d glassfish defaults

Set executable permission on init script with chmod a+x glassfish .

That’s it!

These instructions are very much based on similar posts by Jasper Kalkers Installing Glassfish 2 on ubuntu 7.10 and Cay Horstmann Installing GlassFish and PostgreSQL on Ubuntu Server Edition.

Enable symbolic links in GlassFish

To enable symbolic links in GlassFish, which is disabled by default, go to the admin interface, click Configuration > Http Service > Virtual Servers and then the name of of the virtual server you are using (e.g. server).

Under Additional Properties, click Add Property and enter allowLinking as name and true as value.

It is also possible to activate symbolic links using sun-web.xml.