If you have a hard time remembering the order of the times/dates fields of a crontab record this header might help you. I use this on all of my crontabs. Each value, if tab seperated should line up under the correct heading.
# #min hr day mon dayofwk cmd # #-------------------------------------------------------------------------------
Creating sub-shells in bash is simple: just put the commands to be run in the sub-shell inside parentheses. This causes bash to start the commands as a separate process. This group of commands essentially acts like a separate script file, their input/output can be collectively redirected and/or they can be executed in the background by following the closing parenthesis with an ampersand.
#!/bin/bash server_cmd=server pid_file=$(basename $server_cmd .sh).pid log_file=$(basename $server_cmd .sh).log ( echo "Starting server" echo "Doing some init work" $server_cmd # server becomes a daemon while true do if [[ -f $pid_file ]]; then sleep 15 else break fi done mail -s "Server exitted" joe@example.com <<<CRAP ) 2>&1 >> $log_file & echo "Server started"quote and example via LinuxJournal
I can never seem to remember what all of these default parameter variables are. I found this small shell script that prints them out when I forget.
#!/bin/sh -vx ####################################################### # example_1.1 (c) R.H.Reepe 1996 March 28 Version 1.0 # ####################################################### echo "Script name is [$0]" echo "First Parameter is [$1]" echo "Second Parameter is [$2]" echo "This Process ID is [$$]" echo "This Parameter Count is [$#]" echo "All Parameters [$@]" echo "The FLAGS are [$-]"It produces output like this:
#!/bin/sh -vx ####################################################### # example_1.1 (c) R.H.Reepe 1996 March 28 Version 1.0 # ####################################################### echo "Script name is [$0]" + echo 'Script name is [/home/me/bin/shellhelp]' Script name is [/home/me/bin/shellhelp] echo "First Parameter is [$1]" + echo 'First Parameter is []' First Parameter is [] echo "Second Parameter is [$2]" + echo 'Second Parameter is []' Second Parameter is [] echo "This Process ID is [$$]" + echo 'This Process ID is [15190]' This Process ID is [15190] echo "This Parameter Count is [$#]" + echo 'This Parameter Count is [0]' This Parameter Count is [0] echo "All Parameters [$@]" + echo 'All Parameters []' All Parameters [] echo "The FLAGS are [$-]" + echo 'The FLAGS are [hvxB]' The FLAGS are [hvxB]
You can watch command output on stdout as well as saving that output to a file for later analysis with the tee command.
me@home:~$ date |tee teefile.txt Wed Dec 17 10:50:21 CST 2008 me@home:~$ cat teefile.txt Wed Dec 17 10:50:21 CST 2008 me@home:~$
I found myself recently having to add some space to one of my LVM partitions. It’s fairly simple. First extend the partition size with lvextend:
lvextend -L+1G /dev/myvg/homevolThen, because I use ReiserFS I do:
resize_reiserfs -f /dev/myvg/homevolIf you use a different underlying filesystem refer to this page from the LVM HOWTO.
Tags: lvextend, lvm, lvm2, resize_reiserfs
Quick command to see what you can run with elevated permissions via sudo:
sudo -lTags: sudo
Increase the load average on a machine for testing.
while true; do w & w & w & w; done
Nice sed tip to remove extra whitespace at the end of lines in a file.
sed -e 's/ *$//' <file>Tags: sed, whitespace
Ping a host until it answers and then connect. I actually have this in a script that will use the first argument as the host.
while ! ping -W 1 -c 1 <hostname or IP> 2>&1 >/dev/null; do true; done && sleep 15; ssh <user>@<hostname or IP>via The Linux Blog