Important Advanced Linux Commands for Programmers

Linux is one of the most popular operating systems for developers and hackers. Today we are going to highlight some of the advanced Linux commands which are being used by regular Linux users in order to make their system keep running smoothly and well configured. Linux is such an OS that could be configured in any required way, as per the user’s knowledge and requirement.

Advanced Linux Commands for Programmers

You get full control over every module of the system which could be configured and restricted in the way you need. Here are some useful commands.

Also, Read: Why Programmers Should Use Linux

1. ifconfig

ifconfig is used to configure the kernel-resident network interfaces. It is used at boot time to set up interfaces as necessary. After that, it is usually only needed when debugging or when system tuning is needed.

  • ifconfig, when invoked with no arguments will display all the details of currently active interfaces. If you give the interface name as an argument, the details of that specific interface will be displayed.

# ifconfig eth0

eth0   Link encap:Ethernet  HWaddr 00:2D:32:3E:39:3B

inet addr:192.168.2.2  Bcast:192.168.2.255  Mask:255.255.255.0

inet6 addr: fe80::21d:92ff:fede:499b/64 Scope:Link

UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

RX packets:977839669 errors:0 dropped:1990 overruns:0 frame:0

TX packets:1116825094 errors:8 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:2694625909 (2.5 GiB)  TX bytes:4106931617 (3.8 GiB)

Interrupt:185 Base address:0xdc00

  • Display Details of All interfaces Including Disabled Interfaces

# ifconfig -a

  •  Disable an Interface

# ifconfig eth0 down

  •  Enable an Interface

# ifconfig eth0 up

  •  Assign IP-address to an Interface

# ifconfig eth0 192.168.2.2

  • Change MTU

# ifconfig eth0 mtu XX

2. netstat

netstat command displays various network related information such as network connections, routing tables, interface statistics, masquerade connections, multicast memberships etc

  • List All Network Ports

[root@root ~]$ netstat -a

Active UNIX domain sockets (servers and established)

Proto RefCnt Flags       Type       State         I-Node   Path

unix  2      [ ACC ]     STREAM     LISTENING     741379   /run/user/user1/keyring-I5cn1c/gpg

unix  2      [ ACC ]     STREAM     LISTENING     8965     /var/run/acpid.socket

unix  2      [ ACC ]     STREAM     LISTENING     18584    /tmp/.X11-unix/X0

unix  2      [ ACC ]     STREAM     LISTENING     741385   /run/user/user1/keyring-I5cn1c/ssh

unix  2      [ ACC ]     STREAM     LISTENING     741387   /run/user/user1/keyring-I5cn1c/pkcs11

unix  2      [ ACC ]     STREAM     LISTENING     20242    @/tmp/dbus-ghtTjuPN46

unix  2      [ ACC ]     STREAM     LISTENING     13332    /var/run/samba/winbindd_privileged/pipe

unix  2      [ ACC ]     STREAM     LISTENING     13331    /tmp/.winbindd/pipe

unix  2      [ ACC ]     STREAM     LISTENING     11030    /var/run/mysqld/mysqld.sock

unix  2      [ ACC ]     STREAM     LISTENING     19308    /tmp/ssh-qnZadSgJAbqd/agent.3221

unix  2      [ ACC ]     STREAM     LISTENING     436781   /tmp/HotShots

unix  2      [ ACC ]     STREAM     LISTENING     46110    /run/user/ravisaive/pulse/native

unix  2      [ ACC ]     STREAM     LISTENING     19310    /tmp/gpg-zfE9YT/S.gpg-agent

  • List All TCP Ports

[root@root ~]$ netstat -at

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address           Foreign Address         State

tcp        0      0 localhost:mysql         *:*                     LISTEN

tcp        0      0 *:5901                  *:*                     LISTEN

tcp        0      0 *:5902                  *:*                     LISTEN

tcp        0      0 *:x11-1                 *:*                     LISTEN

tcp        0      0 *:x11-2                 *:*                     LISTEN

tcp        0      0 *:5938                  *:*                     LISTEN

tcp        0      0 localhost:5940          *:*                     LISTEN

tcp        0      0 ravisaive-OptiPl:domain *:*                     LISTEN

tcp        0      0 ravisaive-OptiPl:domain *:*                     LISTEN

tcp        0      0 localhost:ipp           *:*                     LISTEN

tcp        0      0 ravisaive-OptiPle:48270 ec2-23-21-236-70.c:http ESTABLISHED

tcp        0      0 ravisaive-OptiPle:48272 ec2-23-21-236-70.c:http TIME_WAIT

tcp        0      0 ravisaive-OptiPle:48421 bom03s01-in-f22.1:https ESTABLISHED

tcp        0      0 ravisaive-OptiPle:48269 ec2-23-21-236-70.c:http ESTABLISHED

tcp        0      0 ravisaive-OptiPle:39084 channel-ecmp-06-f:https ESTABLISHED

  • Show Statistics for All Ports

[root@root ~]$ netstat -s

Ip:

4994239 total packets received

0 forwarded

0 incoming packets discarded

4165741 incoming packets delivered

3248924 requests sent out

8 outgoing packets dropped

Icmp:

29460 ICMP messages received

566 input ICMP message failed.

ICMP input histogram:

destination unreachable: 98

redirects: 29362

2918 ICMP messages sent

0 ICMP messages failed

ICMP output histogram:

destination unreachable: 2918

IcmpMsg:

InType3: 98

InType5: 29362

OutType3: 2918

Tcp:

94533 active connections openings

23 passive connection openings

5870 failed connection attempts

7194 connection resets received

….

3. nslookup

A network utility program used to obtain information about Internet servers. As its name suggests, the utility finds name server information for domains by querying DNS.

  • Query Mail Exchanger Record

[root@root ~]$ nslookup -query=mx abc.com

Server:                     192.168.1.1

Address:                 192.168.1.1#53

Non-authoritative answer:

abc.com       mail exchanger = 0 smtp.secureserver.net.

abc.com       mail exchanger = 10 mailstore1.secureserver.net.

  • Query Name Server

[root@root ~]$ nslookup -type=ns abc.com

Server:                     192.168.1.1

Address:                 192.168.1.1#53

Non-authoritative answer:

abc.com       nameserver = ns3404.com.

abc.com       nameserver = ns3403.com.

  • Query DNS Record

[root@root ~]$ nslookup -type=any abc.com

Server:                     192.168.1.1

Address:                 192.168.1.1#53

Non-authoritative answer:

abc.com       mail exchanger = 10 mailstore1.secureserver.net.

abc.com       mail exchanger = 0 smtp.secureserver.net.

abc.com       nameserver = ns06.domaincontrol.com.

abc.com       nameserver = ns3404.com.

abc.com       nameserver = ns3403.com.

abc.com       nameserver = ns05.domaincontrol.com.

  • Query Start of Authority

[root@root ~]$ nslookup -type=soa abc.com

Server:                     192.168.1.1

Address:                 192.168.1.1#53

Non-authoritative answer:

abc.com

origin = ns3403.hostgator.com

mail addr = dnsadmin.gator1702.hostgator.com

serial = 2012081102

refresh = 86400

retry = 7200

expire = 3600000

minimum = 86400

4. dig

a dig is a tool for querying DNS nameservers for information about host addresses, mail exchanges, nameservers, and related information. This tool can be used from any Linux (Unix) or Macintosh OS X operating system. The most typical use of dig is to simply query a single host

    • Turn Off Comment Lines

[root@root ~]$ dig abc.com +nocomments ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> tecmint.com +nocomments ;; global options: +cmd ;abc.com.                                       IN             A abc.com.                       14400   IN             A               40.216.66.239 ;; Query time: 418 msec ;; SERVER: 192.168.1.1#53(192.168.1.1) ;; WHEN: Sat Jun 29 13:53:22 2013 ;; MSG SIZE  rcvd: 45

    • Turn Off Authority Section

[root@root ~]$ dig abc.com +noauthority

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> tecmint.com +noauthority

;; global options: +cmd

;; Got answer:

;; ->>HEADER<

  • Disable All Sections at Once

[root@root ~]$ dig tecmint.com +noall

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6 <<>> tecmint.com +noall

;; global options: +cmd

5. top

Displays the processes of CPU. This command refreshes automatically, by default, and continues to show CPU processes unless interrupt instruction is given.
[root@root ~]$ top

top – 14:06:45 up 10 days, 20:57,  2 users,  load average: 0.10, 0.16, 0.21

Tasks: 240 total,   1 running, 235 sleeping,   0 stopped,   4 zombie

%Cpu(s):  2.0 us,  0.5 sy,  0.0 ni, 97.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

KiB Mem:   2028240 total,  1777848 used,   250392 free,    81804 buffers

KiB Swap:  3905532 total,   156748 used,  3748784 free,   381456 cached

PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+ COMMAND

23768 ravisaiv  20   0 1428m 571m  41m S   2.3 28.9  14:27.52 firefox

24182 ravisaiv  20   0  511m 132m  25m S   1.7  6.7   2:45.94 plugin-containe

26929 ravisaiv  20   0  5344 1432  972 R   0.7  0.1   0:00.07 top

24875 ravisaiv  20   0  263m  14m  10m S   0.3  0.7   0:02.76 lxterminal

1 root      20   0  3896 1928 1228 S   0.0  0.1   0:01.62 init

2 root      20   0     0    0    0 S   0.0  0.0   0:00.06 kthreadd

3 root      20   0     0    0    0 S   0.0  0.0   0:17.28 ksoftirqd/0

5 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 kworker/0:0H

7 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 kworker/u:0H

8 root      rt   0     0    0    0 S   0.0  0.0   0:00.12 migration/0

9 root      20   0     0    0    0 S   0.0  0.0   0:00.00 rcu_bh

10 root      20   0     0    0    0 S   0.0  0.0   0:26.94 rcu_sched

11 root      rt   0     0    0    0 S   0.0  0.0   0:01.95 watchdog/0

12 root      rt   0     0    0    0 S   0.0  0.0   0:02.00 watchdog/1

13 root      20   0     0    0    0 S   0.0  0.0   0:17.80 ksoftirqd/1

14 root      rt   0     0    0    0 S   0.0  0.0   0:00.12 migration/1

16 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 kworker/1:0H

17 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 cpuset

18 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 khelper

19 root      20   0     0    0    0 S   0.0  0.0   0:00.00 kdevtmpfs

20 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 netns

21 root      20   0     0    0    0 S   0.0  0.0   0:00.04 bdi-default

22 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 kintegrityd

23 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 kblockd

24 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 ata_sff

6. mkfs.ext4

This command creates a new ext4 file system on the specified device, if the wrong device is followed after this command, the whole block will be wiped and formatted, hence it is suggested not to run this command unless and until you understand what you are doing. Mkfs.ext4 /dev/sda1 (sda1 block will be formatted) mkfs.ext4 /dev/sdb1 (sdb1 block will be formatted)

7. vi/emacs/nano

vi (visual), emacs, and nano are some of the most commonly used editors in Linux. They are used often to edit text, configuration,… files. A quick guide to work around vi and nano is, emacs is a.

    • vi-editor

[root@root ~]$ touch a.txt (creates a text file a.txt) [root@root ~]$ vi a.txt (open a.txt with vi editor) [press ‘i’ to enter insert mode, or you won’t be able to type-in anything] echo “Hello”  (your text here for the file) *  alt+x (exit insert mode, remember to keep some space between the last letter. *  ctrl+x command or your last word will be deleted). *  :wq! (saves the file, with the current text, remember ‘!’ is to override).

    • nano editor

[root@root ~]$ nano a.txt (open a.txt file to be edited with nano)
edit, with the content, required

ctrl +x (to close the editor). It will show output as:

Save modified buffer (ANSWERING “No” WILL DESTROY CHANGES)?

Y Yes

N No           ^C Cancel<

Click ‘y’ to yes and enter the file name, and you are done.

8. rsync

Rsync copies files and has a -P switch for a progress bar. So if you have rsync installed, you could use a simple alias.

alias cp=’rsync -aP’

Now try to copy a large file in the terminal and see the output with the remaining items, similar to a progress bar.

Moreover, Keeping and Maintaining backup is one of the most important and boring works a system administrator, needs to perform. Rsync is a very nice tool (there exists, several others) to create and maintain the backup, in the terminal.

[root@root ~]$ rsync -zvr IMG_5267\ copy\=33\ copy\=ok.jpg ~/Desktop/

sending incremental file list

IMG_5267 copy=33 copy=ok.jpg

sent 2883830 bytes  received 31 bytes  5767722.00 bytes/sec

total size is 2882771  speedup is 1.00

Note: -z for compression, -v for verbose and -r for recursive

9. mysqldump

From the name, it is understood what this command actually stands for, from the name of this command.mysqldump commands dump (backups) all or a particular database data into a given a file. For example,

[root@root ~]$ mysqldump -u root -p –all-databases > /home/server/Desktop/backupfile.sql

Note: mysqldump requires MySQL to be running and correct password for authorization

10. uptime

You have just connected to your Linux Server Machine and founds Something unusual or malicious, what you will do? Guessing…. No, definitely not you could run uptime to verify what happened actually when the server was unattended.

[root@root ~]$ uptime

14:37:10 up  4:21,  2 users,  load average: 0.00, 0.00, 0.04

11. talk

An enhancement to the write command, the talk command lets you talk to the logged-in users.

[root@root ~]$ talk ravisaive

Note: If the talk command is not installed, you can always apt or yum the required packages.

[root@root ~]$ yum install talk

OR

[root@root ~]$ apt-get install talk

12. w

what command ‘w’ seems you funny? But actually, it is not. it’s a command, even if it’s just one letter long! The command “w” is a combination of uptime and who commands given one immediately after the other, in that order.

[root@root ~]$ w

15:05:42 up  4:49,  3 users,  load average: 0.02, 0.01, 0.00

USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT

server   tty7     :0               14:06    4:43m  1:42   0.08s pam: gdm-passwo

server   pts/0    :0.0             14:18    0.00s  0.23s  1.65s gnome-terminal

server   pts/1    :0.0             14:47    4:43   0.01s  0.01s bash

3 thoughts on “Important Advanced Linux Commands for Programmers”

  1. Please: These are not “Commands” as on Windows, but applications started by the /bin/bash shell. Commands are “alias” and “history”, integral parts of the shell. Say that your terminal window has been started by the launcher as process 1000, then type “”ls” and check with “ps” on another windows, and you will see that you are running “ls” as process 1001, and that “#ls | grep something ” will launch ls as 102 and grep as 103 connected with a pipe.
    Redhat, Mint, and OSX use the “Bourne Again SHell” – “bash”. Change the “path” to include the “commands” or use “alias” to change them to whatever you prefer – so that when you type “netstat” the shell replaces this with “netstat -a”. with “alias” or “environment variable” expansion. The most important change is to include ‘where I am” in the search path to the binaries.
    Anyone can use ‘alias” to rename the executable to whatever they like to use – well then just for them. Every binary launched get a new process id and a line in your “history’. look at history, and type just the number of the line followed by exclamation ! – “doit”, and doit again -3! is three lines back again,

    Reply
  2. vi is looking overly complicated in this article.
    A good tip for using vi is installing it’s younger brother vim which stands for vi improved.
    i=insert
    ESC=quit current mode (leave insert mode or other modes, plugins sometimes require you to write `:q` as ESC will have a different usage there.)
    :w = save
    :wq = save&quit
    :wall|q = save all open buffers and quit current one
    :wall|qa = save all and quit vim

    and there is bunches more to learn that will make your editing insanely efficient.
    Both the mentioned Emacs and vi(m) are incredibly loved and efficient editors if you are willing to learn them, which isn’t as hard as it seems.

    Reply

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.