Skip to main content

Linux command line tips and tricks

This post lists a number of useful tips and tricks from my daily Linux experience. Mostly I deal with RHEL but I believe these commands are quite independent on Linux distribution (or can be adapted).

Network commands
Here are network commands represented.

Basic net utils:
# Who is listening to port:
netstat -lp | grep <port>

# Show all connections with numeric addresses and proc IDs:
netstat -anp

# Listen to port (to check connectivity from another side):
netcat -l -p <port>
# -or-
nc -l -p <port>
SSH tunnel:
# Tunnel to remote_ip:remote_port via proxy_ip with known login/password
# The remote_ip:remote_port is being redirected to localhost:local_port
ssh -L local_port:remote_ip:remote_port login@proxy_ip

# Real-world example of tunnel to remote Sedna XML DB:
ssh -L 5050: pxqa1@
Download via HTTP proxy with wget:
# Download resource from internet from behind a proxy:
http_proxy=http://host:port ; export http_proxy ; wget --proxy=on

# The same for ftp resources:
ftp_proxy=http://host:port ; export ftp_proxy ; wget --proxy=on
Telnet via HTTP proxy:
# 1. Connect to the proxy:
pxqa1@server:/home/pxqa1>telnet 8080
Connected to (
Escape character is '^]'.

## 2. Establish SFTP tunnel
CONNECT remote_sftp_server:22 HTTP/1.0
Proxy-Authorization: Basic bnhw...OQ==

HTTP/1.1 200 Connection established

SSH-2.0-OpenSSH_5.1p1 FreeBSD-20080901

## -or- 2. Establish HTTP tunnel

## -or- 2. Establish FTP tunnel
CONNECT remote_ftp_server:21 HTTP/1.0
Proxy-Authorization: Basic bnhw...OQ==

HTTP/1.1 200 Connection established

220 Test FTP server (version 6.1.1) ready.
USER username
331 Password required for username.
PASS password
230-Welcome to Test!
230 User username logged in.
Transfer data with rsync:
# Copy/update data locally:
rsync -acv --delete source_path destination_path

# Copy/update data remotely via SSH, e.g. war build:
rsync -acv --delete --rsh=ssh .war jboss@

# Upload files interruption-safe:
rsync -av --partial --rsh=ssh local_file_name username@remote_host:remote_path
# Show all rules:
iptables -L
# Show all rules with numeric addresses:
iptables -L -n

# Manage service:
service iptables start/stop/status
# Save changes to config file:
service iptables save

# Redirect port, e.g. from 80 to 8080:
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080

# Block particular IP address:
iptables -I INPUT -s -j DROP
# Unblock particular IP address:
iptables -D INPUT -s -j DROP

# Delete chains/rules in table 'nat'
iptables -t nat -F
iptables -t nat -X

Local commands
Here are local commands represented.

Specific finds:
# Find by name with wildcards, e.g. '*.txt'
find . -name "*.txt"

# Find files that contain specific substring, e.g. 'qqq'
find . -exec grep 'qqq' '{}' \; -print

# Find broken symlinks
find . -xdev -type l -print0 | xargs -0 -I '{}' sh -c "[ -e '{}' ] || (echo '{}' is broken)"
One-liners with bash logic:
# Using for loop, e.g. removing all .svn directories recursively
for i in `find -name .svn`; do rm -fr $i ; done

# Using if condition
if [ $t -eq 10 ] ; then echo 'yes'; elif echo 'no'; fi
AWK and SED transformations:
# Just a simple example - extracting time value from ping response
PINGRESPONSE="64 bytes from icmp_seq=1 ttl=128 time=0.221 ms"
TIME=`echo $PINGRESPONSE | awk '{print $7}' | sed 's/time=//'`


Popular posts from this blog

DynamicReports and Spring MVC integration

This is a tutorial on how to exploit DynamicReports reporting library in an existing  Spring MVC based web application. It's a continuation to the previous post where DynamicReports has been chosen as the most appropriate solution to implement an export feature in a web application (for my specific use case). The complete code won't be provided here but only the essential code snippets together with usage remarks. Also I've widely used this tutorial that describes a similar problem for an alternative reporting library. So let's turn to the implementation description and start with a short plan of this how-to: Adding project dependencies. Implementing the Controller part of the MVC pattern. Modifying the View part of the MVC pattern. Modifying web.xml. Adding project dependencies I used to apply Maven Project Builder throughout my Java applications, thus the dependencies will be provided in the Maven format. Maven project pom.xml file: net.sourcefo

Using Oracle impdp utility to reload database

Here I'll show an example of using Oracle Data Pump Import (impdp) utility. It allows importing Oracle data dumps. Specifically, below is the list of steps I used on an existing Oracle schema to reload the data from a dump. Steps to reload the data from an Oracle dump We start with logging into SQL Plus as sysdba to be able to manage users. sqlplus sys/password@test as sysdba Dropping the existing user. CASCADE clause will ensure that all schema objects are removed before the user. SQL> DROP USER test CASCADE; Creating a fresh user will automatically create an empty schema with the same name. SQL> CREATE USER test IDENTIFIED BY "testpassword"; Granting DBA role to the user to load the dump later. Actually, it's an overkill and loading the dump can be permitted using a more granular role IMP_FULL_DATABASE . SQL> GRANT DBA TO test; Registering the directory where the dump is located. SQL> CREATE DIRECTORY dump_dir AS '/home/test/dumpd

Do It Yourself Java Profiling

This article is a free translation of the Russian one that is a transcript of the Russian video lecture done by Roman Elizarov at the Application Developer Days 2011 conference. The lecturer talked about profiling of Java applications without any standalone tools. Instead, it's suggested to use internal JVM features (i.e. threaddumps, java agents, bytecode manipulation) to implement profiling quickly and efficiently. Moreover, it can be applied on Production environments with minimal overhead. This concept is called DIY or "Do It Yourself". Below the lecture's text and slides begin. Today I'm giving a lecture "Do It Yourself Java Profiling". It's based on the real life experience that was gained during more than 10 years of developing high-loaded finance applications that work with huge amounts of data, millions currency rate changes per second and thousands of online users. As a result, we have to deal with profiling. Application pro