Linux 命令行总结

时间:2024-10-11 23:37:50

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

# ln test1 test8
-rw-r--r-- root root Nov : test1
-rw-r--r-- root root Nov : test8

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

# ln -s test1 test9
lrwxrwxrwx root root Nov : test9 -> test1

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

# cp -s test1 test10
lrwxrwxrwx root root Nov : test10 -> test1

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

# stat test2
File: `test2'
Size: Blocks: IO Block: regular empty file
Device: 803h/2051d Inode: Links:
Access: (/-rw-r--r--) Uid: ( / root) Gid: ( / root)
Access: -- ::34.551721265 +
Modify: -- ::34.551721265 +
Change: -- ::39.042608528 +

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

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

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

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

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

# cat -b test1.sh
#!/bin/bash #print hello world in the console window a="hello world" echo $a

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

top - :: up  days,  :,   users,  load average: 0.10, 0.04, 0.01
Tasks: total, running, sleeping, stopped, 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
# sort -n file1

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

# sort -nr file1

3 

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

# sort -t ':' -k  -n /etc/passwd
root:x:::root:/root:/bin/bash
daemon:x:::daemon:/usr/sbin:/usr/sbin/nologin
bin:x:::bin:/bin:/usr/sbin/nologin
sys:x:::sys:/dev:/usr/sbin/nologin
sync:x:::sync:/bin:/bin/sync
games:x:::games:/usr/games:/usr/sbin/nologin

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

# du -sh * | sort -nr
240M work
.0K test.txt
.0K small.pyc
.0K small.py
.0K data.txt
.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/
KDE_IS_PRELINKED=
LANG=en_US.UTF-
MODULEPATH=/usr/share/Modules/modulefiles:/etc/modulefiles
LOADEDMODULES=
KDEDIRS=/usr
SSH_ASKPASS=/usr/libexec/openssh/gnome-ssh-askpass
HISTCONTROL=ignoredups
SHLVL=
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[]}
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=
HOME=/home
INACTIVE=-
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=
HOME=/home
INACTIVE=-
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::
bin:x::bin,daemon
daemon:x::bin,daemon
sys:x::bin,adm
adm:x::adm,daemon
tty:x::
disk:x::
lp:x::daemon
mem:x::
kmem:x::
wheel:x::

创建新组groupadd

# /usr/sbin/groupadd shared
# tailf /etc/group
pcp:x::
squid:x::
sfcb:x::root
radiusd:x::
tcpdump:x::
screen:x::
slocate:x::
zjq:x::
www:x::
shared:x::

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

# /usr/sbin/usermod -G shared test
[root@mail ~]# tail /etc/group
pcp:x::
squid:x::
sfcb:x::root
radiusd:x::
tcpdump:x::
screen:x::
slocate:x::
zjq:x::
www:x::
shared:x::test

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

/usr/sbin/groupmod -n sharing shared
[root@mail ~]# tail /etc/group
pcp:x::
squid:x::
sfcb:x::root
radiusd:x::
tcpdump:x::
screen:x::
slocate:x::
zjq:x::
www:x::
sharing:x::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
bnep
rfcomm
bluetooth bnep,rfcomm
6lowpan_iphc bluetooth
joydev
snd_intel8x0
snd_ac97_codec snd_intel8x0
ac97_bus snd_ac97_codec
snd_pcm snd_ac97_codec,snd_intel8x0
snd_seq_midi

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

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

25、wc 显示文件行数

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

显示文件的单词个数

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

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

* hard nproc