Your bash profile lets you make edits that let you design how the cli works for you. One of my favorite edits is to let me set the scrolling back through my history be based on what I start typing. So, for example, I can type
and then use the up-arrow key and it scrolls through my cli history based only on those that start with cd
To add this to your .profile file (or put it in your .bash_rc file):
To make recovery in case of failure easier, an additional sshd will be started on port ‘1022’. If anything goes wrong with the running ssh you can still connect to the additional one.
If you run a firewall, you may need to temporarily open this port. As this is potentially dangerous it’s not done automatically. You can open the port with e.g.:
‘iptables -I INPUT -p tcp –dport 1022 -j ACCEPT’
12 minutes after the upgrade started, the download was complete and I got a message to decide if I wanted to manually approve every restart required or just automatically approve them all. I chose the option to have all restart automatically.
Then lots of files were installed and I was asked about various files; where I (or some script) had changed (or deleted) the default file and now the upgrade wanted to replace the existing file. I had to guess what to do in those cases. They let you look at the diff between your existing file and the proposed overwrite. I think I would like it if they default behavior was to create a backup of the file in that same directory (you choosing whether to set your file or the updated file as active).
The entire process took exactly 30 minutes, with the system restarting in Ubuntu 12.04.
Thankfully the upgrade seems to have gone without causing any problems. This is normally the case. But, even with a very small likelihood of encountering issues it is worrisome as those issues might pose some serious problems. Especially for someone with very limited system administration ability.
I am extremely thankful for all the programmers that created the code to make this process so straightforward and reliable.
lets you see the current Ubunutu version you are running.
When I updated a server that had Ruby on Rails applications everything almost worked fine. Passenger was unable to load the application talking about
libmysqlclient_r.so.16: cannot open shared object file: No such file or directory – /usr/local/rvm/gems/ruby-1.9.2-p290/gems/mysql2-0.3.11/lib/mysql2/mysql2.so
I was able to find the solution to that issue was to uninstall the mysql2 gem and then run bundle update: which worked great. The uninstall would work for me unless I was actually root (sudo didn’t work), so I used su to login as root and then
gem uninstall mysql2
Then I went back to being my other user ran bundle update
To customize the look of the command prompt for Terminal in Ubuntu you can insert code into .bashrc (if you are having trouble with updates in .bashrc not working you may want to see if it is set in .profile – thus overriding your .bashrc). Those files are found in your user directory /home/[username]
will show you the current settings. You can make a change directly from the command line but it will only work for that session. For example:
PS1="\d\w $ "
This is the code I have in my .bashrc related to the terminal prompt
# set variable identifying the chroot you work in (used in the prompt below)
if [ -z "$debian_chroot" ] && [ -r /etc/debian_chroot ]; then
# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
if [ -n "$force_color_prompt" ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
if [ "$color_prompt" = yes ]; then
unset color_prompt force_color_prompt
For a Virtual Private Server (VPS) or any other web or other server you should have alerts sent by email for various things. So for example if you automate security updates for an Ubuntu web server you want to be notified if there is some issue with the automatic update.
In order to check and be sure email is setup and working on the sever there is simple command line code to use:
mail -s Test
you then get a prompt to enter
To: [enter the email and press return]
Cc: [press return]
then a blank where you can type in any text you want in the body of the message.
Then you send the message with by pressing CTRL-d
If you don’t receive the email then you can troubleshoot what is going wrong.
A full update of all packages can be done using the follow, remember this may create some issues is one update makes something else you have no longer work properly. You should test to make sure things all work after the updates (for production systems obviously you should test things before [first updating the staging server to make sure the updates don’t cause any problems] and after the updates).
First update the local package index (to find what needs to be upgraded).
An authentication key allows your server to authenticate the computer you are using has the right key and should be granted access. This lets you use the key instead of a username and password when using ssh.
If you don’t already have a key on your local machine (look for a file named id_rsa.pub in your user home directory under the .ssh folder
will get you to the right directory) then you need to generate the key pair. On your desktop machine use:
Next you copy the file to your server. scp ~/.ssh/id_dsa.pub [user]@[server]:.ssh/
scp ~/.ssh/id_dsa.pub username@servername:.ssh/
Rename the file on the server to authorized_keys2
mv id_rsa.pub authorized_keys2
The key is for to authenticate your computer. But on the ssh login Ubuntu will look in the user folder. So if you also had user2 access to the server and tried to ssh into the server you would not be authenticated because it would look in user2/.ssh for the authorized key file and not find it. You can put the same key in any user folder on your server to have that user also be automatically authenticated.
Host keys are used to security log into remote servers (such as Virtual Private Servers – VPS). With Ubuntu if you are using host keys to sign into servers securely and have asked for strict checking, if you make a change (such as rebuilding your VPS) the host key will change and you cannot login and will get a message like:
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
Please contact your system administrator.
RSA host key for 220.127.116.11 has changed and you have requested strict checking.
Host key verification failed.
if that happens you need to remove your local host key. Then you can sign back in and you will be able to save a new copy of the host key. If you don’t know why the key has changed you should figure that out first as it maybe be an indication of an important security problem. To remove you local key, you can use ssh-keygen -R [ip address of server with the bad key] for example: ssh-keygen -R 18.104.22.168
Then when you try to sign in you will get
The authenticity of host '22.214.171.124 (126.96.36.199)' can't be established.
RSA key fingerprint is ed:...:ea.
Are you sure you want to continue connecting (yes/no)?
And if you know why (such as you made changes to the server) you can say yes and connect and save the new known host key.
SHOW GLOBAL STATUS;
SHOW ENGINE INNODB STATUS;
SHOW GLOBAL STATUS LIKE 'Qcache_%';
mytop – top for MySQL. Install using: sudo apt-get install mytop (assuming Ubuntu operating system). There is a very useful setting file that can be used to set parameters instead of having to include them in each command. Save the file as ~/.mytop.
MySQLTuner – provides suggestions on performance improvements and my.cnf settings by analyzing data on your mysql database server.
If Open_tables (SHOW GLOBAL STATUS will show this) is equal to your
(set in /etc/mysql/my.cnf) that means it is being capped by your setting. The more MySQL has to read the table from disk the more IO and slower response, so if you have available RAM increasing the table_cache size may well make a big difference.
Key_reads/Key_read_request ratio should normally be < 0.01 (per MySQL manual, this means that nearly all key requests are taken from RAM). You can get both values using SHOW GLOBAL STATUS and then calculate the ratio. If the ratio is too high, consider increasing the key_buffer (in /etc/mysql/my.sql).
key_writes/key_writes_request should normally be near 1 (per MySQL manual)