<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Linux on plantarum.ca</title>
    <link>https://plantarum.ca/tags/linux/</link>
    <description>Recent content in Linux on plantarum.ca</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 19 Aug 2014 00:00:00 +0000</lastBuildDate>
    
        <atom:link href="https://plantarum.ca/tags/linux/index.xml" rel="self" type="application/rss+xml" />
    
    
    <item>
      <title>Medium Performance Cluster Computing</title>
      <link>https://plantarum.ca/2014/08/19/medium-performance-cluster-computing/</link>
      <pubDate>Tue, 19 Aug 2014 00:00:00 +0000</pubDate>
      
      <guid>https://plantarum.ca/2014/08/19/medium-performance-cluster-computing/</guid>
      <description>&lt;p&gt;I recently ran into a crunch getting some memory-intensive GIS analysis
completed. My work laptop has 2 CPUs and 4GB RAM, and running one instance
of the &lt;a href=&#34;http://grass.osgeo.org&#34;&gt;GRASS GIS&lt;/a&gt; &lt;code&gt;r.horizon&lt;/code&gt; command on a 16GB
map was gobbling up 8GB of virtual RAM, which temporarily ground my machine
to a crawl before the process was killed.&lt;/p&gt;
&lt;p&gt;GRASS is not yet installed on the high performance cluster at work, so I
decided to try setting up my own &lt;em&gt;medium&lt;/em&gt; performance cluster on a
&lt;a href=&#34;https://www.digitalocean.com/?refcode=0c9c59e00cc0&#34;&gt;Digital Ocean&lt;/a&gt;&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; VPS
(which they refer to as &amp;lsquo;droplets&amp;rsquo;).&lt;/p&gt;
&lt;h1 id=&#34;why&#34;&gt;Why?&lt;/h1&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;strong&gt;Price&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;Not only are their prices competitively low, they charge &lt;em&gt;by the hour&lt;/em&gt;.
This means you can have your own virtual machine with 64GB RAM and 20
CPUs for less than $1/hour. What&amp;rsquo;s more, the minimum period is one hour.
Meaning, in theory, you could spin up a droplet, get 20 hours of
processing done, and then shut it all down again with no further
commitment.&lt;/dd&gt;
&lt;dt&gt;&lt;strong&gt;Quick &amp;amp; Easy Installation&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;They offer a variety of GNU/Linux distributions, and once you&amp;rsquo;ve chosen
you&amp;rsquo;ll be able to log on to your VPS in 60 seconds. This assumes you&amp;rsquo;re
comfortable working on the command line. But if you&amp;rsquo;re doing cluster
computing, if that&amp;rsquo;s not already true you&amp;rsquo;ll need to learn anyways.&lt;/dd&gt;
&lt;dt&gt;&lt;strong&gt;No Queues&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;No need to worry about submitting batch jobs to a queue or waiting your
turn. It&amp;rsquo;s your VPS, not shared with anyone else.&lt;/dd&gt;
&lt;dt&gt;&lt;strong&gt;Reuse Your Installation&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;You pay for the time your droplet is available. However, you can save a
&amp;lsquo;snapshot&amp;rsquo;, which is stored in your account. This allows you to destroy
your droplet when you don&amp;rsquo;t need it. Then, simply reload it from the saved
snapshot when you next need to crunch some numbers.&lt;/dd&gt;
&lt;dt&gt;&lt;strong&gt;Nerdy fun&lt;/strong&gt;&lt;/dt&gt;
&lt;dd&gt;I have to admit, I was motivated in part by sheer, unbridled nerdy
curiosity. Who wouldn&amp;rsquo;t want to ssh in to their very own server?&lt;/dd&gt;
&lt;/dl&gt;
&lt;h1 id=&#34;why-not&#34;&gt;Why not?&lt;/h1&gt;
&lt;p&gt;This won&amp;rsquo;t be a practical solution in all cases. The longer your job will
take to run, the more practical a real cluster becomes. It&amp;rsquo;s also worth
noting that the CPUs aren&amp;rsquo;t particularly high-powered. So processes won&amp;rsquo;t
run faster than on a recent laptop, assuming memory isn&amp;rsquo;t limiting. Another
thing to consider is how much data you have to upload. This is not a viable
approach for true &amp;lsquo;big data&amp;rsquo; projects! Sending gigabytes over the open
internet can be a very slow process, which is another point in favour of
using a local HPC cluster.&lt;/p&gt;
&lt;h1 id=&#34;how-to&#34;&gt;How-To&lt;/h1&gt;
&lt;p&gt;With that in mind, here&amp;rsquo;s how I set up my temporary cluster:&lt;/p&gt;
&lt;h2 id=&#34;purchase-the-droplet&#34;&gt;Purchase the droplet&lt;/h2&gt;
&lt;p&gt;Browse over to &lt;a href=&#34;https://digitalocean.com&#34;&gt;Digital Ocean&lt;/a&gt; and sign up. Once
you&amp;rsquo;re logged in, click &amp;lsquo;create&amp;rsquo; and fill in your details:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hostname: it&amp;rsquo;s your server, call it what you like&lt;/li&gt;
&lt;li&gt;Size: they offer everything from 512MB/1 CPU up to 64GB/20 CPUs, with
prices varying accordingly. From my project I selected 32GB/12 CPUs for
$0.476/hour&lt;/li&gt;
&lt;li&gt;Region: pick something close, particularly if you&amp;rsquo;ll be up/downloading a
lot of data. In my case, that&amp;rsquo;s New York.&lt;/li&gt;
&lt;li&gt;Linux Distribution: Choices include Ubuntu, Fedora, Debian, CentOS. I
picked Debian, as that&amp;rsquo;s been my OS for the past decade. Regardless of
the distribution, if you&amp;rsquo;re going to be working with large files, you
will definitely want to select the 64bit version of your OS.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;security&#34;&gt;Security&lt;/h2&gt;
&lt;p&gt;Your root password and dedicated IP address will be emailed to you. Which
means the NSA will know it before you do. So immediately log in and change
your password. Actually, as soon as you log in you will be required to
change your password in any case.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ssh root@123.45.67.89
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You&amp;rsquo;ll probably also want a regular-strength user for non-administrative
work, so add that next:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;adduser tyler
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;At this point, you can log in as root or as your regular user. A more
secure option is to authenticate via rsa keys. If you haven&amp;rsquo;t done this
before, generate the key on your laptop/local computer:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ssh-keygen -t rsa
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Note that you can use a blank passphrase here. Doing so will allow you to
log in to the server without entering a password from now on. It also means
that anyone that has physical access to your laptop also be able to log in
to the server without a password. If you&amp;rsquo;ve lost control of your laptop,
this is likely the least of your worries.&lt;/p&gt;
&lt;p&gt;Next, transfer the key to the server:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ssh-copy-id tyler@123.45.67.89
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You&amp;rsquo;ll be asked for your password again here. Now try logging into the
server again:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ssh tyler@123.45.67.89
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If everything is working correctly, you should be logged in to your droplet
without entering a password. If that is the case, we can proceed to shore
up our security. &lt;code&gt;su&lt;/code&gt; to root user, and edit the ssh config files:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;su
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;nano /etc/ssh/sshd_config
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Look for and modify the following lines, then save the file. You need to
remove the comment character (&lt;code&gt;#&lt;/code&gt;)from the beginning of the line, if it&amp;rsquo;s
there, and make sure they say &amp;rsquo;no&amp;rsquo;, not &amp;lsquo;yes&amp;rsquo;. You don&amp;rsquo;t need to modify any
other lines.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;PermitRootLogin no
PasswordAuthentication no
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The second line will prevent anyone from logging in using a password -
you&amp;rsquo;ll only be able to login if you have the correct RSA key on your
computer. This prevents ne&amp;rsquo;er-do-wells from trying to crack your password.&lt;/p&gt;
&lt;p&gt;The first line will prevent anyone (including you!) from logging in
directly as root. Meaning a potential cracker will have to get your RSA key
in order to log on to the machine, and then they&amp;rsquo;ll have to crack the root
password in order to do anything really nasty.&lt;/p&gt;
&lt;p&gt;Note that if you want to access the server from another computer, you&amp;rsquo;ll
have to log in from each computer via password, or at least &lt;code&gt;ssh-copy-id&lt;/code&gt;
the RSA key, before your set &lt;code&gt;PasswordAuthentication no&lt;/code&gt;. Or, afterwards,
simply set it back to &lt;code&gt;PasswordAuthentication yes&lt;/code&gt; briefly from the first
computer long enough for the second computer to log on and &lt;code&gt;ssh-copy-id&lt;/code&gt;
their RSA key.&lt;/p&gt;
&lt;p&gt;One final configuration detail: if you&amp;rsquo;re going to use an X server (to view
graphical windows of any kind), you need to modify &lt;code&gt;/etc/ssh/ssh_config&lt;/code&gt;.
Make sure it includes the following uncommented line:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ForwardX11 yes
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now you need to reload the modified configuration. Still as root:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;/etc/init.d/ssh reload
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Given that we won&amp;rsquo;t have any outward facing servers on this machine, that
should do for our security for now. If you do want to put some servers on
here, you&amp;rsquo;ll definitely want to look into getting at least a firewall, and
probably some intrusion detection software on here. The DigitalOcean
tutorials are quite good in this area.&lt;/p&gt;
&lt;h2 id=&#34;install-software&#34;&gt;Install Software&lt;/h2&gt;
&lt;p&gt;Now that we have a passably secured machine, it&amp;rsquo;s time to install the
software you&amp;rsquo;ll want. Given this is Debian:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;run &lt;code&gt;aptitude&lt;/code&gt; as root&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;u&lt;/strong&gt;pdate&lt;/li&gt;
&lt;li&gt;install any security updates&lt;/li&gt;
&lt;li&gt;select and install your desired programs&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In my case, to run GRASS, I needed the following:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;aptitude install grass emacs screen htop avce00 &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  e00compr git mercurial xorg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;(yes, you can run &lt;code&gt;aptitude&lt;/code&gt; from the command line just like &lt;code&gt;apt-get&lt;/code&gt; if
you like!)&lt;/p&gt;
&lt;h2 id=&#34;setup-grass&#34;&gt;Setup GRASS&lt;/h2&gt;
&lt;p&gt;GRASS will require you to create your database directory on the server
(&lt;strong&gt;not&lt;/strong&gt; as root!):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;mkdir ~/grassdata
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Next you need to transfer any files you need from your &lt;em&gt;local&lt;/em&gt; machine:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;rsync -az --progress --compresslevel&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;9&lt;/span&gt; --partial &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;  grassdata/location tyler@123.45.67.89:grassdata/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The options here include &lt;strong&gt;a&lt;/strong&gt;, which among other things will transfer
directories recursively, &lt;strong&gt;z&lt;/strong&gt;, which will compress files prior to transfer
(which dramatically reduces upload times), &lt;strong&gt;compresslevel=9&lt;/strong&gt;, which uses
the greatest amount of compression, and &lt;strong&gt;partial&lt;/strong&gt; which allows rsync to
pick up where it left off in case the connection is interrupted.&lt;/p&gt;
&lt;h2 id=&#34;running-grass-inside-screen&#34;&gt;Running GRASS Inside Screen&lt;/h2&gt;
&lt;p&gt;Finally, we begin. Now we&amp;rsquo;re ready to use X windows, so when you log back
in you&amp;rsquo;ll want to use the &lt;strong&gt;X&lt;/strong&gt; and &lt;strong&gt;C&lt;/strong&gt; flags to &lt;code&gt;ssh&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ssh -XC tyler@123.45.67.89
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After logging back into your server, run &lt;code&gt;screen&lt;/code&gt;. You&amp;rsquo;ll be transported
from a regular terminal window into a &lt;code&gt;screen&lt;/code&gt; window. It will look almost
exactly the same. But it gives you some super powers, as we&amp;rsquo;ll see shortly.&lt;/p&gt;
&lt;p&gt;Next, start GRASS. In order to conveniently run multiple processes at once,
I prefer to use text mode, hence I start with: &lt;code&gt;grass -text&lt;/code&gt;. Navigate
through the charmingly archaic text windows until you&amp;rsquo;re at the familiar
GRASS text prompt.&lt;/p&gt;
&lt;p&gt;One very helpful thing I discovered about GRASS is that each command is
really a stand-alone program. Which has the lovely side-effect of giving us
quick access to parallel programming. So long as any command &lt;em&gt;foo&lt;/em&gt; does not
require the output of command &lt;em&gt;bar&lt;/em&gt; to run, and vice versa, you can run them
both concurrently. Which means, in my case, I can do things like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;r.slope.aspect elevin&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;dem slope&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;myslope aspect&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;myaspect &amp;amp;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;r.horizon elevin&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;elevation horizonstep&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;30&lt;/span&gt; &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;    bufferzone&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;200&lt;/span&gt; horizon&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;horangle &lt;span style=&#34;color:#ae81ff&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;&lt;/span&gt;    maxdistance&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#ae81ff&#34;&gt;2000&lt;/span&gt; &amp;amp;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You might find yourself getting carried away, starting process after
process. You might want to check on the load your server is under, before
you max out your RAM or CPUs. Here is where &lt;code&gt;screen&lt;/code&gt; comes in handy.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://plantarum.ca/images/htop-screen.png&#34; alt=&#34;screen, with GRASS running in the top window and htop in the bottom&#34;&gt;&lt;/p&gt;
&lt;p&gt;Type &lt;code&gt;Ctrl-a c&lt;/code&gt;, and you&amp;rsquo;ll have a new terminal window to work in.
Your GRASS session is still working away in the background, and you can
check on how many processes you&amp;rsquo;ve spun out by calling &lt;code&gt;htop&lt;/code&gt;. To go back
to the GRASS session, &lt;code&gt;Ctrl-a &amp;quot;&lt;/code&gt; brings up a list of all the windows
available inside your &lt;code&gt;screen&lt;/code&gt; instance, which you can select from with the
arrow keys.&lt;/p&gt;
&lt;p&gt;Finally, you may need to shut down your laptop at some point while the
GRASS session is still running. To do this, we &lt;em&gt;detach&lt;/em&gt; the &lt;code&gt;screen&lt;/code&gt;
session, with &lt;code&gt;Ctrl-a d&lt;/code&gt;. This tucks the session away out of sight, but it
continues to run. It will continue to run even after we log out of the
server. When you want to reconnect to the session, simply enter &lt;code&gt;screen -r&lt;/code&gt;
at the command line and you&amp;rsquo;re back in charge.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;screen&lt;/code&gt; can do a lot more than this, check out the docs for details!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id=&#34;goodbye-but-not-farewell&#34;&gt;Goodbye, but not Farewell&lt;/h1&gt;
&lt;p&gt;When you&amp;rsquo;ve completed all the work you need to do, you can save a snapshot
of your server to use later on. Log in to your Digital Ocean account,
select your droplet, and follow the links to create a snapshot. Once that&amp;rsquo;s
done, you can safely destroy the droplet. A destroyed droplet will no
longer accrue charges (and obviously it won&amp;rsquo;t be doing any processing
either). To reinstate your droplet, follow the same steps you used above to
create a droplet, but instead of selecting a Linux Distribution, select
your snapshot from the &lt;em&gt;My Images&lt;/em&gt; tab.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Comments or questions? Ping me on &lt;a href=&#34;https://ottawa.place/@plantarum&#34;&gt;mastodon&lt;/a&gt;,
or send me an email (address in sidebar)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&#34;footnotes&#34; role=&#34;doc-endnotes&#34;&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li id=&#34;fn:1&#34;&gt;
&lt;p&gt;Full disclaimer: this link uses my referral code, so if you sign up through here I&amp;rsquo;ll get a small kick-back from Digital Ocean. I hope this won&amp;rsquo;t lower your confidence in what some random guy on the internet has written.&amp;#160;&lt;a href=&#34;#fnref:1&#34; class=&#34;footnote-backref&#34; role=&#34;doc-backlink&#34;&gt;&amp;#x21a9;&amp;#xfe0e;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
    </item>
    
  </channel>
</rss>
