SlideShare a Scribd company logo
Learning the
Command Line
...the first thing that Apple's hackers had done when they'd got the
MacOS up and running--probably even before they'd gotten it up and
running--was to re-create the Unix interface, so that they would be able
to get some useful work done...
-- In the Beginning was the Command Line
Neal Stephenson
http://www.slideshare.net/aramonc/learning-the-command-line-33146569
Follow along...
$>mkdir -p ~/www/wp_site/news
&& wget http://wordpress.org/latest.zip
&& unzip latest.zip -d
~/www/wp_site/news
Chaining commands with &
Make news directory under /var/www/wp_site, then
download latest version of WordPress, then extract the
contents of the archive to /var/www/wp_site/news
● Developer at ServerGrove
● All around nerd
● Systems Administrator for
7 years
● @aramonc in all the places
About Me
More than 40% of all web servers use *nix
Why bother?
Debian
Ubuntu
CentOS/RHEL
SmartOS*
Servers do not use graphical interfaces
*Not really Linux, still Unix based
30,000 Web Sites Hacked A Day
Why bother?
● Increased speed & flexibility
● Muscle memory
● Large pool of freely available utilities
● *nix Command Line utilities are mostly
standard
Why bother?
What if I mess up?
Learning the command line
Getting to the Command Line
Windows
Localhost:
Cygwin
Webhost:
SSH via PuTTY
OSX, *nix
Localhost:
Terminal, xterm, etc
Webhost:
SSH via the above
Navigating Folders = Directory Tree
Where are you right now?
$>pwd
/Users/adrian_sg/www/wp_site/news
Print Working Directory
● /Users/adrian_sg/www/wp_site/news = a path
● / not 
● Starts with / (root) = absolute
What’s in here?
$>ls
index.php wp-includes
license.txt wp-links-opml.php
readme.html wp-load.php
wp-activate.php wp-login.php
wp-admin wp-mail.php
wp-blog-header.php wp-settings.php
wp-comments-post.php wp-signup.php
wp-config-sample.php wp-trackback.php
LiSt
What’s in here?
$>ls -la
total 320
drwxr-xr-x 21 adrian_sg wheel 714 Feb 28 22:07 .
drwxr-xr-x 3 root wheel 102 Feb 28 21:57 ..
-rw-r--r--@ 1 adrian_sg wheel 640 Mar 05 20:14 .htaccess
-rw-r--r--@ 1 adrian_sg wheel 418 Sep 24 20:18 index.php
-rw-r--r--@ 1 adrian_sg wheel 19929 Jan 18 2013 license.txt
-rw-r--r--@ 1 adrian_sg wheel 7185 Jan 13 13:16 readme.html
drwxr-xr-x@ 88 adrian_sg wheel 2992 Jan 23 15:17 wp-admin
drwxr-xr-x@ 5 adrian_sg wheel 170 Jan 23 15:17 wp-content
-rw-r--r--@ 1 adrian_sg wheel 2932 Sep 24 20:18 wp-cron.php
LiSt
Moving around...
$>cd wp-admin
$>pwd
~/www/wp_site/wp-admin
$>cd /var/www/wp_site
$>pwd
~/www/wp_site
$>cd wp-content/themes/twentyfourteen
$>pwd
~/www/wp_site/wp-content/themes/twentyfourteen
Change Directory
Moving around...
$>cd ..
$>pwd
~/www/wp_site
$>cd ~/
$>pwd
/Users/adrian_sg
$>cd -
$>pwd
~/www/wp_site
Change Directory
Where is this thing?
$>find . -iname xml*
~/www/wp_site/xmlrpc.php
$>find . -mtime 3
Find
. (dot) means current directory
-mtime in 24 hour increments of
modified date
Where is this thing?
$>grep theme ./*
./index.php: * wp-blog-header.php...the theme.
grep: ./wp-admin: Is a directory
./wp-settings.php:require(ABSPATH.WPINC.'/theme.php');
./wp-settings.php:do_action( 'setup_theme' );
Globally search a Regular Expression and Print
Where is this thing?
$>grep -R theme ./*
./wp-admin/update.php: $parent_file='themes.php';
./wp-admin/update.php: $submenu_file='themes.php';
./wp-admin/update.php: $nonce='install-theme_'.$theme;
Globally search a Regular Expression and Print
Can I change things?
$>ls -l
total 320
-rw-r--r--@ 1 adrian_sg wheel 418 Sep 24 20:18 index.php
-rw-r--r--@ 1 adrian_sg wheel 19929 Jan 18 2013 license.txt
-rw-r--r--@ 1 adrian_sg wheel 7185 Jan 13 13:16 readme.html
drwxr-xr-x@ 88 adrian_sg wheel 2992 Jan 23 15:17 wp-admin
drwxr-xr-x@ 5 adrian_sg wheel 170 Jan 23 15:17 wp-content
-rw-r--r--@ 1 adrian_sg wheel 2932 Sep 24 20:18 wp-cron.php
drwxr-xr-x@ 122 adrian_sg wheel 4148 Jan 23 15:17 wp-includes
-rw-r--r--@ 1 adrian_sg wheel 2359 Oct 24 18:58 wp-load.php
Owners, Groups, & Permissions
Can I change things?
Permissions
r = Read
w = Write
x = Execute (run a script or open a directory)
Three levels of permissions: Owner, Group,
Everyone else
Can I change things?
Owner = User
● Sometimes your user
● Sometimes root
● Sometimes www-data (Apache user)
Can I change things?
Group
● Permissions for a set of users
● Users have own group
● Most users only belong to own group
Can I change things?
Permissions
Owner Group EveryoneIs Dir.?
rwx r-x r-xd
$>ls -l
drwxr-xr-x@ 88 adrian_sg wheel 2992 Jan 23 15:17 wp-admin
adrian_sg wheel
How do I change this thing?
$>mkdir -p useless/stuff
$>ls -l
-rw-r--r--@ 1 adrian_sg wheel 418 Sep 24 20:18 index.php
-rw-r--r--@ 1 adrian_sg wheel 19929 Jan 18 2013 license.txt
-rw-r--r--@ 1 adrian_sg wheel 7185 Jan 13 13:16 readme.html
drwxr-xr-x 2 adrian_sg wheel 68 Mar 3 22:04 useless
-rw-r--r--@ 1 adrian_sg wheel 4892 Oct 4 10:12 wp-activate.php
MaKe DIRectory
How do I change this thing?
$>mv readme.html useless/stuff/readme
$>ls -l
-rw-r--r--@ 1 adrian_sg wheel 418 Sep 24 20:18 index.php
-rw-r--r--@ 1 adrian_sg wheel 19929 Jan 18 2013 license.txt
drwxr-xr-x 2 adrian_sg wheel 68 Mar 3 22:04 useless
-rw-r--r--@ 1 adrian_sg wheel 4892 Oct 4 10:12 wp-activate.php
MoVe
How do I change this thing?
$>cp wp-config-sample.php wp-config.php
$>ls -l
-rw-r--r--@ 1 adrian_sg wheel 4795 Sep 5 21:38 wp-comments-post.php
-rw-r--r--@ 1 adrian_sg wheel 3087 Oct 24 18:58 wp-config-sample.php
-rw-r--r--@ 1 adrian_sg wheel 3087 Mar 3 21:59 wp-config.php
drwxr-xr-x@ 5 adrian_sg wheel 170 Jan 23 15:17 wp-content
CoPy
● cp -a keeps same permissions
as original
Learning the command line
When everything goes wrong...
$>less
/var/log/apache2/error_log
Read the log file
Learning the command line
When everything goes wrong...
Read the log file
● (up arrow) to scroll towards the top
● (down arrow) to scroll towards the bottom
● (space) next page
● p previous page
● q(uit) to exit
● / <expression> to search for <expression>
● n to search again
But I only care about the last error...
$>tail -n 5 /var/log/apache2/error_log
[Mon Mar 03 10:28:01 2014] [notice] Digest: generating secret for digest
authentication ...
[Mon Mar 03 10:28:01 2014] [notice] Digest: done
[Mon Mar 03 10:28:01 2014] [notice] Apache/2.2.26 (Unix) DAV/2 PHP/5.5.4
mod_ssl/2.2.26 OpenSSL/0.9.8y configured -- resuming normal operations
[Mon Mar 03 13:40:08 2014] [notice] child pid 8870 exit signal Bus error (10)
[Mon Mar 03 18:02:20 2014] [notice] caught SIGTERM, shutting down
Read the last few lines of the log file
I only care about the current error...
$>tail -f /var/log/apache2/error_log
[Mon Mar 03 10:28:01 2014] [notice] Digest: generating secret for digest
authentication ...
[Mon Mar 03 10:28:01 2014] [notice] Digest: done
[Mon Mar 03 10:28:01 2014] [notice] Apache/2.2.26 (Unix) DAV/2 PHP/5.5.4
mod_ssl/2.2.26 OpenSSL/0.9.8y configured -- resuming normal operations
[Mon Mar 03 13:40:08 2014] [notice] child pid 8870 exit signal Bus error (10)
[Mon Mar 03 18:02:20 2014] [notice] caught SIGTERM, shutting down
[Mon Mar 03 20:18:01 2014] [notice] Apache/2.2.26 (Unix) DAV/2 PHP/5.5.4
mod_ssl/2.2.26 OpenSSL/0.9.8y configured -- resuming normal operations
Read the log file as it happens
● -f is interactive
● Ctrl+C to exit interactive
Who is currently on my site?
$>tail -f /var/log/apache2/*access_log
::1 - - [26/Dec/2013:09:35:23 -0500] "OPTIONS * HTTP/1.0" 200 -
127.0.0.1 - - [26/Dec/2013:09:35:34 -0500] "GET / HTTP/1.1" 200 44
127.0.0.1 - - [26/Dec/2013:09:35:34 -0500] "GET /favicon.ico HTTP/1.1" 404 209
127.0.0.1 - - [26/Dec/2013:09:36:40 -0500] "GET / HTTP/1.1" 304 -
127.0.0.1 - - [26/Dec/2013:09:36:42 -0500] "GET / HTTP/1.1" 304 -
Read the access log as it happens
How do I change this thing
$>nano wp-config.php
Nano text editor
Learning the command line
How do I change this thing
$>nano wp-config.php
^G Get Help ^O WriteOut
^R Read File ^Y Prev Page
^K Cut Text ^C Cur Pos
^X Exit ^J Justify
^W Where Is ^V Next Page
^U UnCut Text ^T To Spell
Nano text editor
Putting it all together
$>tail -n 10000
/var/log/apache2/error_log | grep “Mar
01” | less
Deep filtering with the pipe statement
Look for any log entry that occurred on March 1st within the
last ten thousand lines of the error log and display it in a
way I can easily navigate
Putting it all together
$>mkdir -p wp-content/uploads && echo -
e "RemoveHandler .php .phtml .php3
php4nRemoveType .php .phtml .php3
php4" > wp-content/uploads/.htaccess
Creating files without a text editor
Make a new uploads directory in wp-content, then create a
.htaccess file in uploads with the contents of
“RemoveHandler .php .phtml .php3 php4
RemoveType .php .phtml .php3 php4”
Resources
● Usage Share of Server OSes
● In The Beginning Was the Command Line
● linuxcommand.org
● 5-Minute Essential Shell Tutorial
● PuTTY
● Cygwin
Questions?
Thank you!
http://www.slideshare.net/aramonc/learning-the-command-line-33146569

More Related Content

PDF
PDF
Beyond Golden Containers: Complementing Docker with Puppet
PDF
PDF
Containers for sysadmins
ODP
Perl dancer
PDF
Install tomcat 5.5 in debian os and deploy war file
PPTX
OpenStack Swift - MSST 2011 Tutorial Day
PPTX
What is suid, sgid and sticky bit
Beyond Golden Containers: Complementing Docker with Puppet
Containers for sysadmins
Perl dancer
Install tomcat 5.5 in debian os and deploy war file
OpenStack Swift - MSST 2011 Tutorial Day
What is suid, sgid and sticky bit

What's hot (15)

DOCX
Really useful linux commands
PDF
Solaris_quickref.pdf
PPTX
Environments line-up! Vagrant & Puppet 101
PDF
Heroku Tips and Hacks
PDF
mapserver_install_linux
PDF
How to add user in system without useradd command
PDF
Build Moses on Ubuntu (64-bit) in VirtualBox: recorded by Aaron
PPTX
2012 coscup - Build your PHP application on Heroku
PDF
konfigurasi freeradius + daloradius in debian 9
PPTX
망고100 보드로 놀아보자 7
PDF
Phishing for Root (How I Got Access to Root on Your Computer With 8 Seconds o...
PDF
Talk NullByteCon 2015
PDF
Alfredo-PUMEX
PDF
Augeas
PDF
Provisionamento orquestrado nas nuvens com Juju
Really useful linux commands
Solaris_quickref.pdf
Environments line-up! Vagrant & Puppet 101
Heroku Tips and Hacks
mapserver_install_linux
How to add user in system without useradd command
Build Moses on Ubuntu (64-bit) in VirtualBox: recorded by Aaron
2012 coscup - Build your PHP application on Heroku
konfigurasi freeradius + daloradius in debian 9
망고100 보드로 놀아보자 7
Phishing for Root (How I Got Access to Root on Your Computer With 8 Seconds o...
Talk NullByteCon 2015
Alfredo-PUMEX
Augeas
Provisionamento orquestrado nas nuvens com Juju
Ad

Similar to Learning the command line (20)

PDF
First there was the command line
PDF
Conquering the Command Line
PDF
DCEU 18: Tips and Tricks of the Docker Captains
PDF
Installing spark 2
PDF
Introduction to docker
PDF
Docker command
PDF
AtlasCamp 2015 Docker continuous integration training
PPTX
Virtualization and automation of library software/machines + Puppet
PDF
EF09-Installing-Alfresco-components-1-by-1.pdf
KEY
Automating Drupal Development: Makefiles, features and beyond
PDF
PFIセミナー資料 H27.10.22
PDF
DeveloperWeek 2015: A Practical Introduction to Docker
PPTX
Dtalk shell
PDF
Noah Zoschke at Waza 2013: Heroku Secrets
PDF
LogStash - Yes, logging can be awesome
PDF
Piwik elasticsearch kibana at OSC Tokyo 2016 Spring
PDF
PDF
Linux 系統管理與安全:基本 Linux 系統知識
PDF
Ef09 installing-alfresco-components-1-by-1
PDF
Attacking IoT Devices from a Web Perspective - Linux Day
First there was the command line
Conquering the Command Line
DCEU 18: Tips and Tricks of the Docker Captains
Installing spark 2
Introduction to docker
Docker command
AtlasCamp 2015 Docker continuous integration training
Virtualization and automation of library software/machines + Puppet
EF09-Installing-Alfresco-components-1-by-1.pdf
Automating Drupal Development: Makefiles, features and beyond
PFIセミナー資料 H27.10.22
DeveloperWeek 2015: A Practical Introduction to Docker
Dtalk shell
Noah Zoschke at Waza 2013: Heroku Secrets
LogStash - Yes, logging can be awesome
Piwik elasticsearch kibana at OSC Tokyo 2016 Spring
Linux 系統管理與安全:基本 Linux 系統知識
Ef09 installing-alfresco-components-1-by-1
Attacking IoT Devices from a Web Perspective - Linux Day
Ad

Recently uploaded (20)

PPTX
Introduction to Artificial Intelligence
PDF
System and Network Administraation Chapter 3
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
PPTX
ai tools demonstartion for schools and inter college
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PPTX
CHAPTER 2 - PM Management and IT Context
PDF
How Creative Agencies Leverage Project Management Software.pdf
PDF
How to Choose the Right IT Partner for Your Business in Malaysia
PDF
medical staffing services at VALiNTRY
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PPTX
history of c programming in notes for students .pptx
PDF
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
PPT
Introduction Database Management System for Course Database
PDF
System and Network Administration Chapter 2
PDF
Softaken Excel to vCard Converter Software.pdf
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PPTX
L1 - Introduction to python Backend.pptx
Introduction to Artificial Intelligence
System and Network Administraation Chapter 3
Odoo Companies in India – Driving Business Transformation.pdf
How to Migrate SBCGlobal Email to Yahoo Easily
ai tools demonstartion for schools and inter college
Adobe Illustrator 28.6 Crack My Vision of Vector Design
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
CHAPTER 2 - PM Management and IT Context
How Creative Agencies Leverage Project Management Software.pdf
How to Choose the Right IT Partner for Your Business in Malaysia
medical staffing services at VALiNTRY
Design an Analysis of Algorithms I-SECS-1021-03
history of c programming in notes for students .pptx
Claude Code: Everyone is a 10x Developer - A Comprehensive AI-Powered CLI Tool
Introduction Database Management System for Course Database
System and Network Administration Chapter 2
Softaken Excel to vCard Converter Software.pdf
Wondershare Filmora 15 Crack With Activation Key [2025
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
L1 - Introduction to python Backend.pptx

Learning the command line

  • 1. Learning the Command Line ...the first thing that Apple's hackers had done when they'd got the MacOS up and running--probably even before they'd gotten it up and running--was to re-create the Unix interface, so that they would be able to get some useful work done... -- In the Beginning was the Command Line Neal Stephenson http://www.slideshare.net/aramonc/learning-the-command-line-33146569
  • 2. Follow along... $>mkdir -p ~/www/wp_site/news && wget http://wordpress.org/latest.zip && unzip latest.zip -d ~/www/wp_site/news Chaining commands with & Make news directory under /var/www/wp_site, then download latest version of WordPress, then extract the contents of the archive to /var/www/wp_site/news
  • 3. ● Developer at ServerGrove ● All around nerd ● Systems Administrator for 7 years ● @aramonc in all the places About Me
  • 4. More than 40% of all web servers use *nix Why bother? Debian Ubuntu CentOS/RHEL SmartOS* Servers do not use graphical interfaces *Not really Linux, still Unix based
  • 5. 30,000 Web Sites Hacked A Day Why bother?
  • 6. ● Increased speed & flexibility ● Muscle memory ● Large pool of freely available utilities ● *nix Command Line utilities are mostly standard Why bother?
  • 7. What if I mess up?
  • 9. Getting to the Command Line Windows Localhost: Cygwin Webhost: SSH via PuTTY OSX, *nix Localhost: Terminal, xterm, etc Webhost: SSH via the above
  • 10. Navigating Folders = Directory Tree
  • 11. Where are you right now? $>pwd /Users/adrian_sg/www/wp_site/news Print Working Directory ● /Users/adrian_sg/www/wp_site/news = a path ● / not ● Starts with / (root) = absolute
  • 12. What’s in here? $>ls index.php wp-includes license.txt wp-links-opml.php readme.html wp-load.php wp-activate.php wp-login.php wp-admin wp-mail.php wp-blog-header.php wp-settings.php wp-comments-post.php wp-signup.php wp-config-sample.php wp-trackback.php LiSt
  • 13. What’s in here? $>ls -la total 320 drwxr-xr-x 21 adrian_sg wheel 714 Feb 28 22:07 . drwxr-xr-x 3 root wheel 102 Feb 28 21:57 .. -rw-r--r--@ 1 adrian_sg wheel 640 Mar 05 20:14 .htaccess -rw-r--r--@ 1 adrian_sg wheel 418 Sep 24 20:18 index.php -rw-r--r--@ 1 adrian_sg wheel 19929 Jan 18 2013 license.txt -rw-r--r--@ 1 adrian_sg wheel 7185 Jan 13 13:16 readme.html drwxr-xr-x@ 88 adrian_sg wheel 2992 Jan 23 15:17 wp-admin drwxr-xr-x@ 5 adrian_sg wheel 170 Jan 23 15:17 wp-content -rw-r--r--@ 1 adrian_sg wheel 2932 Sep 24 20:18 wp-cron.php LiSt
  • 14. Moving around... $>cd wp-admin $>pwd ~/www/wp_site/wp-admin $>cd /var/www/wp_site $>pwd ~/www/wp_site $>cd wp-content/themes/twentyfourteen $>pwd ~/www/wp_site/wp-content/themes/twentyfourteen Change Directory
  • 15. Moving around... $>cd .. $>pwd ~/www/wp_site $>cd ~/ $>pwd /Users/adrian_sg $>cd - $>pwd ~/www/wp_site Change Directory
  • 16. Where is this thing? $>find . -iname xml* ~/www/wp_site/xmlrpc.php $>find . -mtime 3 Find . (dot) means current directory -mtime in 24 hour increments of modified date
  • 17. Where is this thing? $>grep theme ./* ./index.php: * wp-blog-header.php...the theme. grep: ./wp-admin: Is a directory ./wp-settings.php:require(ABSPATH.WPINC.'/theme.php'); ./wp-settings.php:do_action( 'setup_theme' ); Globally search a Regular Expression and Print
  • 18. Where is this thing? $>grep -R theme ./* ./wp-admin/update.php: $parent_file='themes.php'; ./wp-admin/update.php: $submenu_file='themes.php'; ./wp-admin/update.php: $nonce='install-theme_'.$theme; Globally search a Regular Expression and Print
  • 19. Can I change things? $>ls -l total 320 -rw-r--r--@ 1 adrian_sg wheel 418 Sep 24 20:18 index.php -rw-r--r--@ 1 adrian_sg wheel 19929 Jan 18 2013 license.txt -rw-r--r--@ 1 adrian_sg wheel 7185 Jan 13 13:16 readme.html drwxr-xr-x@ 88 adrian_sg wheel 2992 Jan 23 15:17 wp-admin drwxr-xr-x@ 5 adrian_sg wheel 170 Jan 23 15:17 wp-content -rw-r--r--@ 1 adrian_sg wheel 2932 Sep 24 20:18 wp-cron.php drwxr-xr-x@ 122 adrian_sg wheel 4148 Jan 23 15:17 wp-includes -rw-r--r--@ 1 adrian_sg wheel 2359 Oct 24 18:58 wp-load.php Owners, Groups, & Permissions
  • 20. Can I change things? Permissions r = Read w = Write x = Execute (run a script or open a directory) Three levels of permissions: Owner, Group, Everyone else
  • 21. Can I change things? Owner = User ● Sometimes your user ● Sometimes root ● Sometimes www-data (Apache user)
  • 22. Can I change things? Group ● Permissions for a set of users ● Users have own group ● Most users only belong to own group
  • 23. Can I change things? Permissions Owner Group EveryoneIs Dir.? rwx r-x r-xd $>ls -l drwxr-xr-x@ 88 adrian_sg wheel 2992 Jan 23 15:17 wp-admin adrian_sg wheel
  • 24. How do I change this thing? $>mkdir -p useless/stuff $>ls -l -rw-r--r--@ 1 adrian_sg wheel 418 Sep 24 20:18 index.php -rw-r--r--@ 1 adrian_sg wheel 19929 Jan 18 2013 license.txt -rw-r--r--@ 1 adrian_sg wheel 7185 Jan 13 13:16 readme.html drwxr-xr-x 2 adrian_sg wheel 68 Mar 3 22:04 useless -rw-r--r--@ 1 adrian_sg wheel 4892 Oct 4 10:12 wp-activate.php MaKe DIRectory
  • 25. How do I change this thing? $>mv readme.html useless/stuff/readme $>ls -l -rw-r--r--@ 1 adrian_sg wheel 418 Sep 24 20:18 index.php -rw-r--r--@ 1 adrian_sg wheel 19929 Jan 18 2013 license.txt drwxr-xr-x 2 adrian_sg wheel 68 Mar 3 22:04 useless -rw-r--r--@ 1 adrian_sg wheel 4892 Oct 4 10:12 wp-activate.php MoVe
  • 26. How do I change this thing? $>cp wp-config-sample.php wp-config.php $>ls -l -rw-r--r--@ 1 adrian_sg wheel 4795 Sep 5 21:38 wp-comments-post.php -rw-r--r--@ 1 adrian_sg wheel 3087 Oct 24 18:58 wp-config-sample.php -rw-r--r--@ 1 adrian_sg wheel 3087 Mar 3 21:59 wp-config.php drwxr-xr-x@ 5 adrian_sg wheel 170 Jan 23 15:17 wp-content CoPy ● cp -a keeps same permissions as original
  • 28. When everything goes wrong... $>less /var/log/apache2/error_log Read the log file
  • 30. When everything goes wrong... Read the log file ● (up arrow) to scroll towards the top ● (down arrow) to scroll towards the bottom ● (space) next page ● p previous page ● q(uit) to exit ● / <expression> to search for <expression> ● n to search again
  • 31. But I only care about the last error... $>tail -n 5 /var/log/apache2/error_log [Mon Mar 03 10:28:01 2014] [notice] Digest: generating secret for digest authentication ... [Mon Mar 03 10:28:01 2014] [notice] Digest: done [Mon Mar 03 10:28:01 2014] [notice] Apache/2.2.26 (Unix) DAV/2 PHP/5.5.4 mod_ssl/2.2.26 OpenSSL/0.9.8y configured -- resuming normal operations [Mon Mar 03 13:40:08 2014] [notice] child pid 8870 exit signal Bus error (10) [Mon Mar 03 18:02:20 2014] [notice] caught SIGTERM, shutting down Read the last few lines of the log file
  • 32. I only care about the current error... $>tail -f /var/log/apache2/error_log [Mon Mar 03 10:28:01 2014] [notice] Digest: generating secret for digest authentication ... [Mon Mar 03 10:28:01 2014] [notice] Digest: done [Mon Mar 03 10:28:01 2014] [notice] Apache/2.2.26 (Unix) DAV/2 PHP/5.5.4 mod_ssl/2.2.26 OpenSSL/0.9.8y configured -- resuming normal operations [Mon Mar 03 13:40:08 2014] [notice] child pid 8870 exit signal Bus error (10) [Mon Mar 03 18:02:20 2014] [notice] caught SIGTERM, shutting down [Mon Mar 03 20:18:01 2014] [notice] Apache/2.2.26 (Unix) DAV/2 PHP/5.5.4 mod_ssl/2.2.26 OpenSSL/0.9.8y configured -- resuming normal operations Read the log file as it happens ● -f is interactive ● Ctrl+C to exit interactive
  • 33. Who is currently on my site? $>tail -f /var/log/apache2/*access_log ::1 - - [26/Dec/2013:09:35:23 -0500] "OPTIONS * HTTP/1.0" 200 - 127.0.0.1 - - [26/Dec/2013:09:35:34 -0500] "GET / HTTP/1.1" 200 44 127.0.0.1 - - [26/Dec/2013:09:35:34 -0500] "GET /favicon.ico HTTP/1.1" 404 209 127.0.0.1 - - [26/Dec/2013:09:36:40 -0500] "GET / HTTP/1.1" 304 - 127.0.0.1 - - [26/Dec/2013:09:36:42 -0500] "GET / HTTP/1.1" 304 - Read the access log as it happens
  • 34. How do I change this thing $>nano wp-config.php Nano text editor
  • 36. How do I change this thing $>nano wp-config.php ^G Get Help ^O WriteOut ^R Read File ^Y Prev Page ^K Cut Text ^C Cur Pos ^X Exit ^J Justify ^W Where Is ^V Next Page ^U UnCut Text ^T To Spell Nano text editor
  • 37. Putting it all together $>tail -n 10000 /var/log/apache2/error_log | grep “Mar 01” | less Deep filtering with the pipe statement Look for any log entry that occurred on March 1st within the last ten thousand lines of the error log and display it in a way I can easily navigate
  • 38. Putting it all together $>mkdir -p wp-content/uploads && echo - e "RemoveHandler .php .phtml .php3 php4nRemoveType .php .phtml .php3 php4" > wp-content/uploads/.htaccess Creating files without a text editor Make a new uploads directory in wp-content, then create a .htaccess file in uploads with the contents of “RemoveHandler .php .phtml .php3 php4 RemoveType .php .phtml .php3 php4”
  • 39. Resources ● Usage Share of Server OSes ● In The Beginning Was the Command Line ● linuxcommand.org ● 5-Minute Essential Shell Tutorial ● PuTTY ● Cygwin