Linux 命令行总结

1、使用ln不加参数,会创建硬链接,如果要创建软连接,需要加-s 参数。

# ln test1 test8
-rw-r--r-- 5 root root 0 Nov  4 15:07 test1
-rw-r--r-- 5 root root 0 Nov  4 15:07 test8

2、使用-s 参数,会创建软连接。

# ln -s test1 test9
lrwxrwxrwx 1 root root 5 Nov  4 15:19 test9 -> test1

3、使用cp -s 同样也可以创建软连接。

# cp -s test1 test10
lrwxrwxrwx 1 root root 5 Nov  4 15:21 test10 -> test1

 4、stat命令可以提供文件系统上某个文件的所有状态信息。

# stat test2
  File: `test2'
  Size: 0             Blocks: 0          IO Block: 4096   regular empty file
Device: 803h/2051d    Inode: 267778      Links: 5
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-11-04 15:07:34.551721265 +0800
Modify: 2016-11-04 15:07:34.551721265 +0800
Change: 2016-11-04 15:17:39.042608528 +0800

5、file命令可以用来查看文件类型的工具

# file test4
test4: symbolic link to `test1'  #符号连接,test4链接到test1

6、cat -n 查看文件的时候加行号

# cat -n test1.sh
     1    #!/bin/bash
     2    #print hello world in the console window
     3    a="hello world"
     4    echo $a

7、cat -b 只在文本行前添加行号,空白行不添加行号

# cat -b test1.sh
     1    #!/bin/bash

     2    #print hello world in the console window

     3    a="hello world"

     4    echo $a

8、实时检测进程 top:第一行显示了当前时间、系统的运行时间、登入的用户数以及系统的平均负载。平均负载有三个值:最近一分钟的、最近5分钟的、最近15分钟的平均负载。值越大说明系统的负载越大,如果系统的负载超过2,就说明系统比较繁忙了。

top - 15:45:18 up 198 days,  4:40,  8 users,  load average: 0.10, 0.04, 0.01
Tasks: 1354 total,   1 running, 1352 sleeping,   0 stopped,   1 zombie
Cpu(s):  0.1%us,  0.2%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  66001880k total, 13323228k used, 52678652k free,   290580k buffers
Swap: 16777212k total,    18948k used, 16758264k free,  2260564k cached

 9、sort的用法,数字排序 sort -n

# cat file1
1 
4
3
9
6
7
# sort -n file1
1 
3
4
6
7
9

排反序加参数 -r,sort -nr

# sort -nr file1
9
7
6
4
3
1

sort  -t 参数来指定字段分隔符,-k参数用来指定排序的字段

# sort -t ':' -k 3 -n /etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin

10、使用du -sh |sort -nr 对目录的文件大小进行排序

# du -sh * | sort -nr
240M    work
4.0K    test.txt
4.0K    small.pyc
4.0K    small.py
4.0K    data.txt
4.0K    changer.py

11、tar 打包和解压缩

# tar -cvf test.tar file1 file2 
file1
file2

# ls
file1  file2  test.tar

# tar -xvf test.tar
file1
file2

12、 环境变量:环境变量分为两类,全局变量和局部变量。

查看全局变量 printenv

MAIL=/var/spool/mail/root
PATH=/usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/ibutils/bin:/root/bin
PWD=/root/wangtao/work/shell/20160930
KDE_IS_PRELINKED=1
LANG=en_US.UTF-8
MODULEPATH=/usr/share/Modules/modulefiles:/etc/modulefiles
LOADEDMODULES=
KDEDIRS=/usr
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
LOGNAME=root
QTLIB=/usr/lib64/qt-3.3/lib
CVS_RSH=ssh

查看单个环境变量时,必须在环境变量的名称前放置一个$符。

# echo $HOME
/root

13、set命令会显示为某个特定进程设置的所有环境变量,设置局部环境变量,,记住在环境变量名称,等号和值之间没有空格

# test=testing
# echo  $test
testing

14、在子进程中设置了一个局部环境变量,一旦你推出了环境变量,那个局部环境变量就不能用了。

# bash
# test=testing
#echo $test
testing
#exit
exit
#echo $test

#

15、设置全局环境变量,创建全局环境变量的方法是先创建一个局部环境变量,然后在把它导出到全局环境中,注意在导出局部环境变量时,不能用美元符($)去引用变量名。

# test="testing a long string"
echo $test
testing a long string
# export test
# bash
# echo $test
testing a long string

16、删除环境变量

删除一个已经存在的环境变量,可以使用unset.

# echo $test
testing a long string
# unset test
# echo $test

#

17、PATH环境变量,冒号分隔的shell查找命令的目录列表,设置PATH环境变量

# echo $PATH
/usr/sw-cluster/intel/composer_xe_2013_sp1.4.211/bin/intel64:/usr/sw-cluster/intel/composer_xe_2013_sp1.4.211/mpirt/bin/intel64:/usr/sw-cluster/intel/composer_xe_2013_sp1.4.211/debugger/gdb/intel64_mic/py26/bin
 
echo $PATH
PATH=$PATH:/home/usr/test

18、登陆shell

      当你登陆shell,bash shell 会作为登陆shell启动,登陆shell 会从4个不同的启动文件里读取命令,下面时bash shell处理这些文件的次序。/etc/profile文件时bash shell的主启动文件。 

/etc/profile
$HOME/.bash_profile
$HOME/.bash_login
$HOME/.profile

19.可变数组

# mytest=(one two three four five)

# echo $mytest
one
# echo ${mytest[2]}
three
# echo ${mytest[*]}
one two three four five

20、使用命令别名,使用alias -p 可以查看已有的别名列表

# alias -p
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mc='. /usr/libexec/mc/mc-wrapper.sh'
alias mv='mv -i'
alias rm='rm -i'

你也可以使用alias命令创建自己的命令别名

# alias li='ls -il'

21、添加用户,使用useradd命令使用系统的默认值以及命令行参数来设置用户账户。

# /usr/sbin/useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

可以使用useradd -D -s 来修改用户参数

# useradd -D -s /bin/tsch
You have mail in /var/spool/mail/root
[root@mail ~]# 
[root@mail ~]# 
[root@mail ~]# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/tsch
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes

删除用户 可以使用userdel -r 选择删除用户的HOME目录和mail目录

/usr/sbin/userdel -r test

22、使用linux组

/etc/group文件,/etc/group文件包含系统上用到的每个组的信息。(组名, 组密码, GID, 属于该组的用户列表)

# cat /etc/group
root:x:0:
bin:x:1:bin,daemon
daemon:x:2:bin,daemon
sys:x:3:bin,adm
adm:x:4:adm,daemon
tty:x:5:
disk:x:6:
lp:x:7:daemon
mem:x:8:
kmem:x:9:
wheel:x:10:

创建新组groupadd

# /usr/sbin/groupadd shared
# tailf /etc/group
pcp:x:486:
squid:x:23:
sfcb:x:485:root
radiusd:x:95:
tcpdump:x:72:
screen:x:84:
slocate:x:21:
zjq:x:501:
www:x:502:
shared:x:503:

可以使用usermod命令来添加用户到该组

# /usr/sbin/usermod -G shared test
[root@mail ~]# tail /etc/group
pcp:x:486:
squid:x:23:
sfcb:x:485:root
radiusd:x:95:
tcpdump:x:72:
screen:x:84:
slocate:x:21:
zjq:x:501:
www:x:502:
shared:x:503:test

使用groupmod -n 修改组名,现在已经将组名shared改为sharing.

/usr/sbin/groupmod -n sharing shared
[root@mail ~]# tail /etc/group
pcp:x:486:
squid:x:23:
sfcb:x:485:root
radiusd:x:95:
tcpdump:x:72:
screen:x:84:
slocate:x:21:
zjq:x:501:
www:x:502:
sharing:x:503:test

23、文件系统日志方式

数据模式: 索引节点和文件都会被写入日志;丢失数据风险低,但性能差

排序模式: 只有索引节点数据会被写入日志,但只有数据成功写入后才删除;性能和安全之间的良好折中

ext4:  ext4文件系统支持压缩和加密,ext4文件系统还支持一个称作区段的特性。

磁盘格式化分区与挂载

# sudo fdisk /dev/sdc
p    显示当前分区表
n    添加一个新分区
p    推出,不保存更改
w   将分区表写入磁盘

格式化
mkefs          创建一个ext文件系统
mke2fs        创建一个ext2文件系统
mkfs.ext3    创建一个ext3文件系统
mkfs.ext4    创建一个ext4文件系统

#sudo mkfs.ext4 /dev/sdc1
#sudo mkdir /mnt/testing
#sudo mount -t ext4 /dev/sdc1 /mnt/testing

#这种挂载文件系统的方法只会临时挂载该文件系统。当重启linux系统时,文件系统不会自动挂载,要强制linux在启动时自动挂载这个新文件系统,可以将文件系统添加到/etc/fstab文件按中。

#最流行的文件系统时ext3和ext4,这两个文件系统都提供了日志文件系统。


24、内核模块

Linux的内核模块文件的命名方式通常为<模块名称.ko>,CentOS系统的内核模块被存放在/lib/modules/`uname -r`.
lsmod 命令用来显示当前Linux内核模块状态,模块名称,占用内存大小,是否被使用。
# lsmod
Module                  Size  Used by
vboxsf                 42558  3 
bnep                   18895  2 
rfcomm                 58045  0 
bluetooth             391253  10 bnep,rfcomm
6lowpan_iphc           18262  1 bluetooth
joydev                 17113  0 
snd_intel8x0           37321  2 
snd_ac97_codec        105860  1 snd_intel8x0
ac97_bus               12642  1 snd_ac97_codec
snd_pcm                87194  2 snd_ac97_codec,snd_intel8x0
snd_seq_midi           13324  0 

  modprobe命令可以动态加载喝卸载内核模块:

# modprobe ip_vs                                #动态加载ip_vs模块
root@adonis:~# lsmod | grep ip_vs               #查看模块是否加载成功
ip_vs                 116816  0 
nf_conntrack           87794  1 ip_vs
libcrc32c              12543  1 ip_vs
root@adonis:~# modprobe -r ip_vs                #动态卸载ip_vs模块
root@adonis:~# modinfo ip_vs                    #查看内核模块信息
filename:       /lib/modules/3.16.0-30-generic/kernel/net/netfilter/ipvs/ip_vs.ko
license:        GPL
srcversion:     E99FD4CE8D7CC74AC469649
depends:        nf_conntrack,libcrc32c
intree:         Y
vermagic:       3.16.0-30-generic SMP mod_unload modversions 686 
signer:         Magrathea: Glacier signing key
sig_key:        3C:66:A9:3E:B5:D1:A5:68:11:66:B6:81:A5:17:93:8D:08:1E:4D:C7
sig_hashalgo:   sha512
parm:           conn_tab_bits:Set connections' hash size (int)

25、wc 显示文件行数

# wc -l /etc/passwd
40 /etc/passwd

  显示文件的单词个数

# wc -w /etc/passwd
63 /etc/passwd

26、限制用户的进程数为200,在/etc/security/limits.conf文件末尾中加入一行,root用户不会受影响

* hard nproc 200
原文地址:https://www.cnblogs.com/wangtao1993/p/6030430.html