Page tree
Skip to end of metadata
Go to start of metadata

Most of the Linux commands given in this wiki space assume basic familiarity with Linux and Bash (Bourne Again SHell). Bash is is typically the default shell on most distros. For ITC personnel who have less experience with Linux, you may trip over some "simple" things.  This page contains a number of tips which may help get your head and fingers used to bash.  Note that some of the tuning and troubleshooting information has been moved to Troubleshooting/Tuning Tools

For OpenVMS Admins

If you're experienced with OpenVMS, you will hate bash (for a while, or for a long time).   You'll miss things like /LOG and /CONFIRM doing the same thing on every command.  You'll be annoyed that everything is case-sensitive. You'll wonder why your typing 'cat' (or maybe 'dog') to TYPE a file and 'less' to page through a file.   For while, you may try to customize your ~/.bashrc file to have aliases that make it seem like DCL (I know, I tried).

My best advice, learned the hard way, is just let it go.  The world didn't learn the lessons that DCL could have taught it.  However, what bash and the GNU utilities lack in expressiveness and consistency, it more than makes up for in raw power and flexibility. It may take years, but you'll eventually learn to appreciate the bash/GNU combo and get proficient at it.  Fortunately, Google knows the answer to every bash question you're ever going to have. Use it. 

Here are a few links with a mapping from between VMS and Linux:

Basic Commands

CommandDescription
cat [filename]Display file’s contents to standard output
cd /directorypathChange to directory.
chmod mode filenameChange a file’s permissions.
chown filenameChange who owns a file.
cp source destinationCopy files and directories.
dateDisplay or set the system date and time.
dfDisplay used and available disk space.
duShow how much space each file takes up.
file filenameDetermine what type of data is within a file.
find [pathname] [expression]Search for files matching a provided pattern.
grep pattern [filesname]Search files or output for a particular pattern.
kill pidStop a process. If the process refuses to stop, use kill -9 pid.
less [filename]View the contents of a file one page at a time.
ln source [destination]Create a shortcut.
lsList directory contents.
man [command]Display the help information for the specified command.
mkdir directoryCreate a new directory.
mv source destinationRename or move file(s) or directories.
passwd [name [password]]Change the password or allow (for the system administrator) to
change any password.
psDisplay a snapshot of the currently running processes.
pwdDisplay the pathname for the current directory.
rm directoryRemove (delete) file(s) and/or directories.
rmdir directoryDelete empty directories.
ssh user@machineRemotely log in to another Linux machine, over the network.
Leave an ssh session by typing exit.
su [user [arguments]]Switch to another user account.
sudo command
tail [filename]Display the last n lines of a file
tar filenameStore and extract files from a tarfile (.tar) or tarball (.tar.gz or .tgz).
topDisplays the resources being used on your system.
touch filename

Create an empty file with the specified name.

nohup command &execute command in detached job
historyshows the command line history
useradd usernamecreate a user
passwd usernamesets a password and unlocks the user
usermod -a -G groupName userName

add user to a group

  • -a adds the group to whatever existing groups the user has
  • -G takes a comma separated list
visudoModify the /etc/sudoers file.  Members of groups specified in this file can obtain sudo access

Keyboard Commands

Ctrl + AGo to the beginning of the line you are currently typing on
Ctrl + EGo to the end of the line you are currently typing on
Ctrl + UClears the line before the cursor position. If you are at the end of the line, clears the entire line.
Ctrl + HSame as backspace
Ctrl + RLet's you search through previously used commands
Ctrl + CKill whatever you are running
Ctrl + DExit the current shell
Ctrl + ZPuts whatever you are running into a suspended background process. fg restores it.
Ctrl + WDelete the word before the cursor
Ctrl + KClear the line after the cursor
Ctrl + TSwap the last two characters before the cursor
Esc + TSwap the last two words before the cursor
TabAuto-complete files and folder names

SSDT-Utils image

Part of the reason that I created the ssdt-utils image is so that we could distribute utilities to you that would ease your way into linux (and so I didn't have to document so many arcane commands).  See Install and Update SSDT Utils package.

The ssdt-utils container, among other things, creates a utils alias in your process which allow you to executed bunded commands.  When you execute a utils command, a temporary container is created which maps your current working directory to /tmp in the container.   You can then use utilities to operate on your current directory.  For example, to edit a file in your current directory with nano do:

utils nano /tmp/filename

~/.bashrc file

The ~/.bashrc file is like the LOGIN.COM on VMS.  You should already have one.  But it's a "hidden" file (because it starts with a dot).   You can edit the file with nano with:

cd ~
utils nano /tmp/.bashrc

Crontab

Crontab is used in Linux distributions to schedule jobs.  It can be scheduled for specific minute(s), hour(s), day(s), and so forth.  More information can be seen here. The Wikipedia article explains it fairly well also. 

Look at existing crontab:

## to look at an existing crontab file
sudo crontab -l

Edit existing crontab:

##to edit/create a crontab file (use sudo to make it for root)
sudo crontab -e

##add any commands

Examples:

In the following example, jobs are scheduled on a daily basis (as the root user)  to update the ssdt utilities at 1:00 a.m., run the /ssdt/scripts/updates-pull.sh to pull any updated images at 1:10 a.m., and apply the updates to the /data/production directory tree at 1:30 a.m. Also, it is writing to a logfile for each job. The > syntax overwrites any exiting logfile with the same fully qualified name, and >> appends to any existing logfile with the same fully qualified name (and it will create one if none exists). A date can be added to the log file name.  Note when adding a date, use ` (it is generally on the ~ key) and not '. Note that each crontab is user specific.

##to overwrite exiting logfiles, entries should be:
0 1 * * *   /ssdt/update.sh 2>&1 > /data/production/update-utilities.log
10 1 * * *   /ssdt/scripts/updates-pull.sh 2>&1 > /data/production/updates-pull.log
30 1 * * *  /ssdt/scripts/updates-apply.sh /data/production 2>&1 > /data/production/updates-apply.log

##update utilities at 1:00 a.m. and write to /data/production/update-utilities-year-month-day-hour:minute.log (adds a date to the logfile name)
##example logfile name with this command:  update-utilities-2017-09-27-01:00.log
0 1 * * *   /ssdt/update.sh 2>&1 > /data/production/update-utilities-`date +\%Y-\%m-\%d-\%H:\%M`.log

##to append to exiting logfiles (and create a new one if none exists), entries should be:
0 1 * * *   /ssdt/update.sh 2>&1 >> /data/production/update-utilities.log
10 1 * * *   /ssdt/scripts/updates-pull.sh 2>&1 >> /data/production/updates-pull.log
30 1 * * *  /ssdt/scripts/updates-apply.sh /data/production 2>&1 >> /data/production/updates-apply.log

Miscellaneous

Linux is case sensitive, including commands and filename.  Also, most Linux terminals use auto complete.  This can be quite a time savings when you don't remember the exact name of the file.


  • No labels