Linux is the most suitable operating system for development. It gives all the operation rights to the user, and what the operation is, the pattern will appear. Its biggest charm is openness, freedom and honesty.

And more and more enterprises began to choose Linux as a server, so for our learning partners, understanding Linux is a very important chapter topic. 01 pgrep pgrep has a p in front of the name, which we can guess is related to the process. It is also grep, of course, this is the process related grep command. However, this command is mainly used to enumerate process ids. Such as:

$pgrep -u hchen2244122444

ps -ef | egrep '^hchen' | awk '{print $2}'
Copy the code

The 02 pstree command lists processes in a tree. As follows:

[hchen@RHELSVR5 ~]$ pstree init-+-acpid |-auditd-+-python | `-{auditd} |-automount---4*[{automount}] |-backup.sh---sleep  |-dbus-daemon |-events/0 |-events/1 |-hald---hald-runner---hald-addon-acpi |-httpd---10*[httpd] |-irqbalance |-khelper |-klogd |-ksoftirqd/0 |-ksoftirqd/1 |-kthread-+-aio/0 | |-aio/1 | |-ata/0 | |-ata/1 | |-ata_aux | |-cqueue/0 | |-cqueue/1 | |-kacpid | |-kauditd | |-kblockd/0 | |-kblockd/1 | |-kedac | |-khubd | |-6*[kjournald] | |-kmirrord | |-kpsmoused | |-kseriod | |-kswapd0 | |-2*[pdflush] | |-scsi_eh_0 | |-scsi_eh_1 | |-xenbus | `-xenwatch |-migration/0 |-migration/1 |-6*[mingetty] |-3*[multilog] |-mysqld_safe---mysqld---9*[{mysqld}] |-smartd |-sshd---sshd---sshd---bash---pstree |-svscanboot---svscan-+-3*[supervise---run] | |-supervise---qmail-send-+-qmail-clean | | |-qmail-lspawn | | `-qmail-rspawn | `-2*[supervise---tcpserver] |-syslogd |-udevd |-watchdog/0 |-watchdog/1 -xinetdCopy the code

03 BC This command is mainly used to perform a relatively high precision mathematical operation. Take the square root and so on. Here is a script we wrote using BC command (file name: SQRT)

#! /bin/bash if [ $# -ne 1 ] then echo 'Usage: sqrt number' exit 1else echo -e "sqrt($1)\nquit\n" | bc -q -i fiCopy the code

So, we can use this script to do the square root operation like this:

[hchen@RHELSVR5]$ ./sqrt 36
6
[hchen@RHELSVR5]$ ./sqrt 2.0000
1.4142
[hchen@RHELSVR5]$ ./sqrt 10.0000
3.1622
Copy the code

If you have a large file and you want to split it into smaller files, this command is for that.

[hchen@RHELSVR5 applebak]# ls -l largefile.tar.gz
-rw-r--r-- 1 hchen hchen 436774774 04-17 02:00 largefile.tar.gz

[hchen@RHELSVR5 applebak]# split -b 50m largefile.tar.gz LF_

[hchen@RHELSVR5]# ls -l LF_*-rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_aa
-rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ab
-rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ac
-rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ad
-rw-r--r-- 1 hchen hchen 52428800 05-10 18:34 LF_ae
-rw-r--r-- 1 hchen hchen 52428800 05-10 18:35 LF_af
-rw-r--r-- 1 hchen hchen 52428800 05-10 18:35 LF_ag
-rw-r--r-- 1 hchen hchen 52428800 05-10 18:35 LF_ah
-rw-r--r-- 1 hchen hchen 17344374 05-10 18:35 LF_ai
Copy the code

File merging is done using a simple merge, such as:

[hchen@RHELSVR5]# cat LF_* >largefile.tar.gz
Copy the code

05 nl nl command The other command is similar to the cat command except that it has an ascending sign. As follows:

[hchen@RHELSVR5 include]# nl stdio.h | head -n 10 1 /* Define ISO C stdio on top of C++ iostreams. 2 Copyright (C) 1991199-2004200, 5200 (6) the Free Software Foundation, Inc. 3 This file is part of the GNU C Library. 4 The GNU C Library is free software; you can redistribute it and/or 5 modify it under the terms of the GNU Lesser General Public 6 License as published by the Free Software Foundation; Either 7 Version 2.1 of the License, or (at your option) any later version. 8 The GNU C Library is distributed in the hope that it will be useful,Copy the code

Anyone familiar with Unix should know that this is a system call or command that creates a named pipe. At ordinary times, we are on the command line using the vertical bar “|” the command string up is to use no life line. We use mkFIFO with named pipes. Here is an example: Create a named pipe:

[hchen@RHELSVR5 ~]# mkfifo /tmp/hchenpipe

[hchen@RHELSVR5 ~]# ls -l /tmp
prw-rw-r-- 1 hchen  hchen  0 05-10 18:58 hchenpipe
Copy the code

Then, we run the following command in a shell, which will not return unless someone reads the message from the named pipe.

[hchen@RHELSVR5 ~]# ls -al > /tmp/hchenpipe
Copy the code

We read the information in this pipe in another command window :(which causes the previous command to return)

[hchen@RHELSVR5 ~]# head /tmp/hchenpipe drwx------ 8 hchen hchen 4096 05-10 18:27 . drwxr-xr-x 7 root root 4096 03-05 00:06.. drwxr-xr-x 3 hchen hchen 4096 03-01 18:13 backup -rw------- 1 hchen hchen 721 05-05 22:12 .bash_history -rw-r--r-- 1 hchen hchen 24 02-28 22:20 .bash_logout -rw-r--r-- 1 hchen hchen 176 02-28 22:20 .bash_profile -rw-r--r-- 1 hchen hchen 124 02-28 22:20 .bashrc -rw-r--r-- 1 root root 14002 03-07 00:29 index.htm -rw-r--r-- 1 hchen hchen 31465 03-01 23:48 index.phpCopy the code

The 07 LDD command tells you that one of your executables uses a dynamic link library. Such as:

[hchen@RHELSVR5 ~]# ldd /usr/bin/java
        linux-gate.so.1 =>  (0x00cd9000)
        libgij.so.7rh => /usr/lib/libgij.so.7rh (0x00ed3000)
        libgcj.so.7rh => /usr/lib/libgcj.so.7rh (0x00ed6000)
        libpthread.so.0 => /lib/i686/nosegneg/libpthread.so.0 (0x00110000)
        librt.so.1 => /lib/i686/nosegneg/librt.so.1 (0x009c8000)
        libdl.so.2 => /lib/libdl.so.2 (0x008b5000)
        libz.so.1 => /usr/lib/libz.so.1 (0x00bee000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00aa7000)
        libc.so.6 => /lib/i686/nosegneg/libc.so.6 (0x0022f000)
        libm.so.6 => /lib/i686/nosegneg/libm.so.6 (0x00127000)
        /lib/ld-linux.so.2 (0x00214000)
Copy the code

08 col This command allows you to convert man files to plain text. The following is an example:

# PAGER=cat# man less | col -b > less.txt
Copy the code

09 xmlwf

This command lets you check to see if all the tags in an XML document are correct. Such as:

[hchen@RHELSVR5 ~]# curl 'https://coolshell.cn/?feed=rss2' > cocre.xml
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 64882    0 64882    0     0  86455      0 --:--:-- --:--:-- --:--:-- 2073k
[hchen@RHELSVR5 ~]# xmlwf cocre.xml
[hchen@RHELSVR5 ~]# perl -i -pe 's@<link>@<br>@g' cocre.xml
[hchen@RHELSVR5 ~]# xmlwf cocre.xmlcocre.xml:13:23: mismatched tag
Copy the code

10 lsof

You can list open files.

[root@RHELSVR5 ~]# lsof | grep TCPhttpd 548 apache 4u IPv6 14300967 TCP *:http (LISTEN) httpd 548 apache 6u IPv6 14300972 TCP *:https (LISTEN) httpd 561 apache 4u IPv6 14300967 TCP *:http (LISTEN) httpd 561 apache 6u IPv6 14300972 TCP *:https (LISTEN) sshd 1764 root 3u IPv6 4993 TCP *:ssh (LISTEN) tcpserver 8965 root 3u IPv4 153795500 TCP *:pop3 (LISTEN) mysqld 10202 mysql 10u IPv4 73819697 TCP *:mysql (LISTEN) sshd 10735 root 3u IPv6 160731956 TCP 210.51.0.232: SSH -> 123.117.239.69:31810 (ESTABLISHED) SSHD 10767 hchen 3U IPv6 160731956 TCP 210.51.0.232: SSH ->123.117.239.68:31810 (ESTABLISHED) VSFTPD 11095 root 3u IPv4 152157957 TCP *: FTP (LISTEN)Copy the code