面试题-如何回答好Linux常用命令

Posted by Sunfy on 2021-07-19
Words 14.2k and Reading Time 55 Minutes
Viewed Times
Viewed Times
Visitors In Total

思路

  • 文件操作
  • ssh/scp远程操作
  • 磁盘管理
  • 用户管理
  • 网络管理
  • 系统命令
  • 其他命令

Linux几种文件类型:
d 表示此文件是一个目录
- 表示此文件是一个普通文件
b 表示此文件是一个特殊的块设备I/O文件
c 表示此文件是一个特殊的字符设备I/O文件
l 表示此文件是一个连接文件。在其文件名称后紧跟与它连接的文件路径及名称

文件操作

文件增删改查

文件目录查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
cd /root/Docements # 切换到目录/root/Docements
cd ./path # 切换到当前目录下的path目录中,“.”表示当前目录
cd ../path # 切换到上层目录中的path目录中,“..”表示上一层目录

pwd # 当前工作目录
pwd -P # 显示出实际路径,而非使用连接(link)路径;pwd显示的是连接路径

ls # 展示文件夹内内容
-a :全部的档案,连同隐藏档( 开头为 . 的档案) 一起列出来~
-A :全部的档案,连同隐藏档,但不包括 . 与 .. 这两个目录,一起列出来~
-d :仅列出目录本身,而不是列出目录内的档案数据
-f :直接列出结果,而不进行排序 (ls 预设会以档名排序!)
-F :根据档案、目录等信息,给予附加数据结构,例如:
*:代表可执行档; /:代表目录; =:代表 socket 档案; |:代表 FIFO 档案;
-h :将档案容量以人类较易读的方式(例如 GB, KB 等等)列出来;
-i :列出 inode 位置,而非列出档案属性;
-l :长数据串行出,包含档案的属性等等数据;
-n :列出 UID 与 GID 而非使用者与群组的名称 (UID与GID会在账号管理提到!)
-r :将排序结果反向输出,例如:原本档名由小到大,反向则为由大到小;
-R :连同子目录内容一起列出来;
-S :以档案容量大小排序!
-t :依时间排序
--color=never :不要依据档案特性给予颜色显示;
--color=always :显示颜色
--color=auto :让系统自行依据设定来判断是否给予颜色
--full-time :以完整时间模式 (包含年、月、日、时、分) 输出
--time={atime,ctime} :输出 access 时间或 改变权限属性时间 (ctime)
而非内容变更时间 (modification time) 例如:ls [-aAdfFhilRS] 目录名称 ls [--color={none,auto,always}] 目录名称 ls [--full-time] 目录名称

查看目录
du -sh 目录或者文件
du -m du系统默认输出是以KB,以参数-m表示以MB显示.
cat /etc/fstab 查看分区列表
fdisk -l
df -h
df -ah

创建、删除、复制目录|文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# mkdir创建目录
mkdir [选项]... 目录...
-m, --mode=模式,设定权限<模式> (类似 chmod),而不是 rwxrwxrwx 减 umask
-p, --parents 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录;
-v, --verbose 每次创建新目录都显示信息

# rmdir删除空目录
rmdir [选项]... 目录...
-p 递归删除目录dirname,当子目录删除后其父目录为空时,也一同被删除。如果整个路径被删除或者由于某种原因保留部分路径,则系统在标准输出上显示相应的信息。
-v --verbose 显示指令执行过程

#递归删除目录中所有内容
rm -rf deleteFile
-f :就是force的意思,忽略不存在的文件,不会出现警告消息
-i :互动模式,在删除前会询问用户是否操作
-r :递归删除,最常用于目录删除,它是一个非常危险的参数

# cp命令
用法:cp [选项]... [-T] 源文件 目标文件
 或:cp [选项]... 源文件... 目录
 或:cp [选项]... -t 目录 源文件...
-a :将文件的特性一起复制
-p :连同文件的属性一起复制,而非使用默认方式,与-a相似,常用于备份
-i :若目标文件已经存在时,在覆盖时会先询问操作的进行
-r :递归持续复制,用于目录的复制行为
-u :目标文件与源文件有差异时才会复制

# mv命令 移动文件|重命名文件
用法:mv [选项]... [-T] 源文件 目标文件
 或:mv [选项]... 源文件... 目录
 或:mv [选项]... -t 目录 源文件...
-f :force强制的意思,如果目标文件已经存在,不会询问而直接覆盖
-i :若目标文件已经存在,就会询问是否覆盖
-u :若目标文件已经存在,且比目标文件新,才会更新

# alias 别名
alias [-p] [名称[=值] ... ]
alias dir='ls -l' 输入dir,其实就相当于执行了ls -l

# 建立文件和目录
touch 1.txt
cat > 2.txt (用定向符创建文件,填写内容后,按ctrl+d保存内容)
mkdir mywork 建立mywork这个目录

# 文件下载
wget http://file.tgz
curl http://file.tgz

# 修改文件权限
chmod 777 file.java file.java 的权限-rwxrwxrwx,r表示读、w表示写、x表示可执行
chmod +x hello.sh 赋于可执行权限.
(详细介绍一下权限的控制)
chmod 命令 权限修改 用法:chmod 一位8进制数 filename (rwx 421)
 eg: chmod u+xfilenmame 只想给自己运行,别人只能读
chown netseek.netseek mydir 改变用户属组
-u:表示文件所有者
-g:表示同组用户
-o:表示其它用户
-a:表示所有用户
-opt则是代表操作,可以为:
-+:添加某个权限
--:取消某个权限
-=:赋予给定的权限,并取消原有的权限
而mode则代表权限:
r:可读 4
w:可写 2
x:可执行 1

编辑查看文件命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
vi /var/log/aa.log 		# 打开 /var/log/aa.log文件并编辑
vim /var/log/aa.log # 打开 /var/log/aa.log文件并编辑


cat [选项] [文件]... # 用途是连接文件或标准输入并打印。这个命令常用来显示文件内容,或者将几个文件连接起来显示,或者从标准输入读取内容并显示,它常与重定向符号配合使用。
-A, --show-all 等价于 -vET
-b, --number-nonblank 对非空输出行编号
-e 等价于 -vE
-E, --show-ends 在每行结束处显示 $
-n, --number 对输出的所有行编号,由1开始对所有输出的行数编号
-s, --squeeze-blank 有连续两行以上的空白行,就代换为一行的空白行
-t 与 -vT 等价
-T, --show-tabs 将跳格字符显示为 ^I
-u (被忽略)
-v, --show-nonprinting 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外


# more 命令和cat的功能一样都是查看文件里的内容,但有所不同的是more可以按页来查看文件的内容,还支持直接跳转行等功能:
more [-dlfpcsu ] [-num ] [+/ pattern] [+ linenum] [file ... ]
命令参数:
+n 从笫n行开始显示
-n 定义屏幕大小为n行
+/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示
-c 从顶部清屏,然后显示
-d 提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能
-l 忽略Ctrl+l(换页)字符
-p 通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似
-s 把连续的多个空行显示为一行
-u 把文件内容中的下画线去掉
常用操作命令:
Enter 向下n行,需要定义。默认为1行
Ctrl+F 向下滚动一屏
空格键 向下滚动一屏
Ctrl+B 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
V 调用vi编辑器
!命令 调用Shell,并执行命令
q 退出more


# less 命令用法比起 more 更加的有弹性。在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件,更容易用来查看一个文件的内容!除此之外,在 less 里头可以拥有更多的搜索功能,不止可以向下搜,也可以向上搜。
less [参数] 文件
-b <缓冲区大小> 设置缓冲区的大小
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
-x <数字> 将“tab”键显示为规定的数字空格
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与 / 或 ? 有关)
N:反向重复前一个搜索(与 / 或 ? 有关)
b 向后翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一行
回车键 滚动一页
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页


# tail 命令 从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新,使你看到最新的文件内容.
tail[必要参数][选择参数][文件]
-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示行数
--pid=PID 与-f合用,表示在进程ID,PID死掉之后结束.
-q, --quiet, --silent 从不输出给出文件名的首部
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒


# head 命令用于显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行:
head [参数]... [文件]...
-q 隐藏文件名
-v 显示文件名
-c<字节> 显示字节数
-n<行数> 显示的行数

文件压缩

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# tar命令,用于压缩解压
压缩:tar -jcv -f filename.tar.bz2 要被处理的文件或目录名称
查询:tar -jtv -f filename.tar.bz2
解压:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录
-c :新建打包文件
-t :查看打包文件的内容含有哪些文件名
-x :解打包或解压缩的功能,可以搭配-C(大写)指定解压的目录,注意-c,-t,-x不能同时出现在同一条命令中
-j :通过bzip2的支持进行压缩/解压缩
-z :通过gzip的支持进行压缩/解压缩
-v :在压缩/解压缩过程中,将正在处理的文件名显示出来
-f filename :filename为要处理的文件
-C dir :指定压缩/解压缩的目录dir

tar czvf aaa.tar.gz aaa 将目录aaa压缩成aaa.tar.gz
tar -N '2007/03/01' -zcvf home.tar.gz/home 在/home当中,比2007/03/01新的文件才备份.
tar --exclude /home/cao -zxvf myfile.tar.gz /home/* /etc 要备份/home,/etc,但不要/home/cao
cd /tmp; tar -cvf -/etc | tar -xvf - 将/etc/打包后直接解开/tmp底下,而不产生文件.
tar zxvf aaa.tar.gz 解压缩命令.
tar jxvf aaa.tar.bz2 解压命令
tar zxvf aaa.tar.gz -C /var/www 将aaa.tar.gz解压到/var/www目录下
cpio -covB > [file|device] 备份
cpio -icduv < [file|device] 还原

# gzip 命令压缩文件或文件夹为 .gz文件:
gzip[参数][文件或者目录]
gzip aaa 压缩命令
gzip -d aaa.gz 解压命令
-a or --ascii  使用ASCII文字模式。
-c or --stdout or --to-stdout  把压缩后的文件输出到标准输出设备,不去更动原始文件。
-d or --decompress or ----uncompress  解开压缩文件。
-f or --force  强行压缩文件。不理会文件名称 or 硬连接是否存在以及该文件是否为符号连接。
-h or --help  在线帮助。
-l or --list  列出压缩文件的相关信息。
-L or --license  显示版本与版权信息。
-n or --no-name  压缩文件时,不保存原来的文件名称及时间戳记。
-N or --name  压缩文件时,保存原来的文件名称及时间戳记。
-q or --quiet  不显示警告信息。
-r or --recursive  递归处理,将指定目录下的所有文件及子目录一并处理。
-S<压缩字尾字符串> or ----suffix<压缩字尾字符串>  更改压缩字尾字符串。
-t or --test  测试压缩文件是否正确无误。
-v or --verbose  显示指令执行过程。
-V or --version  显示版本信息。
-num 用指定的数字num调整压缩的速度,-1 or --fast表示最快压缩方法(低压缩比),-9 or --best表示最慢压缩方法(高压缩比)。系统缺省值为6。

compress aaa 将aaa文件压缩成为aaa.Z
compress -d aaa.z 将aaa.z文件压缩成aaa

bzip2 -z filename 压缩,同上加-d参数解压
bzcat filename.bz 查看压缩文件内容

文件搜索

whereis 命令

1
2
3
# whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。和find相比,whereis查找的速度非常快,这是因为linux系统会将 系统内的所有文件都记录在一个数据库文件中,当使用whereis和locate时,会从数据库中查找数据,而不是像find命令那样,通过遍历硬盘来查找,效率自然会很高。 但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。 

whereis [-bmsu] [BMS 目录名 -f ] 文件名

 -b 定位可执行文件。
 -m 定位帮助文件。
 -s 定位源代码文件。
 -u 搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。
 -B 指定搜索可执行文件的路径。
 -M 指定搜索帮助文件的路径。
 -S 指定搜索源代码文件的路径。

使用示例:

img

which命令

会在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果:

1
2
3
4
5
which 可执行文件名称 
-n  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
-p  与-n参数相同,但此处的包括了文件的路径。
-w  指定输出时栏位的宽度。
-V  显示版本信息

使用示例:

img

locate命令

1
2
3
4
5
6
7
8
9
10
11
# locate命令可以在搜寻数据库时快速找到档案,数据库由updatedb程序来更新,updatedb是由cron daemon周期性建立的,locate命令在搜寻数据库时比由整个由硬盘资料来搜寻资料来得快,但较差劲的是locate所找到的档案若是最近才建立或 刚更名的,可能会找不到,在内定值中,updatedb每天会跑一次,可以由修改crontab来更新设定值。(etc/crontab)Locate [选择参数] [样式]
-e 将排除在寻找的范围之外。
-1 如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到 的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的 权限资料。
-f 将特定的档案系统排除在外,例如我们没有到理要把 proc 档案系统中的档案 放在资料库中。
-q 安静模式,不会显示任何错误讯息。
-n 至多显示 n个输出。
-r 使用正规运算式 做寻找的条件。
-o 指定资料库存的名称。
-d 指定资料库的路径
-h 显示辅助讯息
-V 显示程式的版本讯息

使用示例:

img

diff 命令

用于比较两个文件或目录的不同:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 diff[参数][文件1或目录1][文件2或目录2]
# diff命令能比较单个文件或者目录内容。如果指定比较的是文件,则只有当输入为文本文件时才有效。以逐行的方式,比较文本文件的异同处。如果指定比较的是目录的的时候,diff 命令会比较两个目录下名字相同的
# 文本文件。列出不同的二进制文件、公共子目录和只在一个目录出现的文件。

-a or --text  #diff预设只会逐行比较文本文件。
-b or --ignore-space-change  #不检查空格字符的不同。
-B or --ignore-blank-lines  #不检查空白行。
-c  #显示全部内文,并标出不同之处。
-C or --context  #与执行"-c-"指令相同。
-d or --minimal  #使用不同的演算法,以较小的单位来做比较。
-D or ifdef  #此参数的输出格式可用于前置处理器巨集。
-e or --ed  #此参数的输出格式可用于ed的script文件。
-f or -forward-ed  #输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处。
-H or --speed-large-files  #比较大文件时,可加快速度。
-l or --ignore-matching-lines  #若两个文件在某几行有所不同,而这几行同时都包含了选项中指定的字符 or 字符串,则不显示这两个文件的差异。
-i or --ignore-case  #不检查大小写的不同。
-l or --paginate  #将结果交由pr程序来分页。
-n or --rcs  #将比较结果以RCS的格式来显示。
-N or --new-file  #在比较目录时,若文件A仅出现在某个目录中,预设会显示:Only in目录:文件A若使用-N参数,则diff会将文件A与一个空白的文件比较。
-p  #若比较的文件为C语言的程序码文件时,显示差异所在的函数名称。
-P or --unidirectional-new-file  #与-N类似,但只有当第二个目录包含了一个第一个目录所没有的文件时,才会将这个文件与空白的文件做比较。
-q or --brief  #仅显示有无差异,不显示详细的信息。
-r or --recursive  #比较子目录中的文件。
-s or --report-identical-files  #若没有发现任何差异,仍然显示信息。
-S or --starting-file  #在比较目录时,从指定的文件开始比较。
-t or --expand-tabs  #在输出时,将tab字符展开。
-T or --initial-tab  #在每行前面加上tab字符以便对齐。
-u,-U or --unified=  #以合并的方式来显示文件内容的不同。
-v or --version  #显示版本信息。
-w or --ignore-all-space  #忽略全部的空格字符。
-W or --width  #在使用-y参数时,指定栏宽。
-x or --exclude  #不比较选项中所指定的文件 or 目录。
-X or --exclude-from  #您可以将文件 or 目录类型存成文本文件,然后在=中指定此文本文件。
-y or --side-by-side  #以并列的方式显示文件的异同之处。

使用示例:

img

img

24.文件比软件:
cmp cmp(“compare”的缩写)命令用来简要指出两个文件是否存在差异,它的使用权限是所有用户
diff diff命令用于两个文件之间的比较,并指出两者的不同,它的使用权限是所有用户

find命令

基本语法参数如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
find [PATH] [option] [action]

# 与时间有关的参数:
-mtime n : n为数字,意思为在n天之前的“一天内”被更改过的文件;
-mtime +n : 列出在n天之前(不含n天本身)被更改过的文件名;
-mtime -n : 列出在n天之内(含n天本身)被更改过的文件名;
-newer file : 列出比file还要新的文件名
# 例如:
find /root -mtime 0 # 在当前目录下查找今天之内有改动的文件

# 与用户或用户组名有关的参数:
-user name : 列出文件所有者为name的文件
-group name : 列出文件所属用户组为name的文件
-uid n : 列出文件所有者为用户ID为n的文件
-gid n : 列出文件所属用户组为用户组ID为n的文件
# 例如:
find /home/hadoop -user hadoop # 在目录/home/hadoop中找出所有者为hadoop的文件

# 与文件权限及名称有关的参数:
-name filename :找出文件名为filename的文件
-size [+-]SIZE :找出比SIZE还要大(+)或小(-)的文件
-tpye TYPE :查找文件的类型为TYPE的文件,TYPE的值主要有:一般文件(f)、设备文件(b、c)、
目录(d)、连接文件(l)、socket(s)、FIFO管道文件(p);
-perm mode :查找文件权限刚好等于mode的文件,mode用数字表示,如0755;
-perm -mode :查找文件权限必须要全部包括mode权限的文件,mode用数字表示
-perm +mode :查找文件权限包含任一mode的权限的文件,mode用数字表示
# 例如:
find / -name passwd # 查找文件名为passwd的文件
find . -perm 0755 # 查找当前目录中文件权限的0755的文件
find . -size +12k # 查找当前目录中大于12KB的文件,注意c表示byte

查看找文件(find,grep,awk更多的请参照man page或shell编程专题讲解)
几种介绍:
find 路径 -name 文件名
find /etc -name named.conf
locate 通过文件名搜索文件的工具(要先通过updatedb建立索引数据库)
localte named.conf
whereis 是寻找二进制文件,同时也会找到其帮助文件
whichwhere 相似,只是我们所设置的环境变量中设置好的路径中寻找;比如;


find / -name filename.txt 根据名称查找/目录下的filename.txt文件。
find . -name “*.xml” 递归查找所有的xml文件
find . -name “*.xml” |xargs grep “hello world” 递归查找所有文件内容中包含hello world的xml文件
grep -H ‘spring’ *.xml 查找所以有的包含spring的xml文件
find ./ -size 0 | xargs rm -f & 删除文件大小为零的文件
ls -l | grep ‘.jar’ 查找当前目录中的所有jar文件
grep ‘test’ d* 显示所有以d开头的文件中包含test的行。
grep ‘test’ aa bb cc 显示在aa,bb,cc文件中匹配test的行。
grep ‘[a-z]{5}’ aa 显示所有包含每个字符串至少有5个连续小写字符的字符串的行。

使用截图:

img

img

img

tree命令

显示树形的层级目录结构,非原生命令,需要安装tree

tree a

使用示例:

img

ssh/scp 远程操作

ssh 命令用于远程登录上Linux主机:

1
2
3
4
远程登录
ssh userName@ip

ssh [-l login_name] [-p port] [user@]hostname

使用示例:

img

scp 命令是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
远程操作与文件传输
ssh user@remote.machine
scp user@remote.machine:/remote/path /local/path
scp /local/path user@remote.machine:/remote/path

scp [参数] [原路径] [目标路径]

-1 强制scp命令使用协议ssh1
-2 强制scp命令使用协议ssh2
-4 强制scp命令只使用IPv4寻址
-6 强制scp命令只使用IPv6寻址
-B 使用批处理模式(传输过程中不询问传输口令或短语)
-C 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
-p 保留原文件的修改时间,访问时间和访问权限。
-q 不显示传输进度条。
-r 递归复制整个目录。
-v 详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
-c cipher 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
-F ssh_config 指定一个替代的ssh配置文件,此参数直接传递给ssh。
-i identity_file 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
-l limit 限定用户所能使用的带宽,以Kbit/s为单位。
-o ssh_option 如果习惯于使用ssh_config(5)中的参数传递方式,
-P port 注意是大写的P, port是指定数据传输用到的端口号
-S program 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。

使用示例:

img

磁盘管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
mount 加载一个硬件设备
 用法:mount [参数] 要加载的设备 载入点
  eg: mount /dev/cdrom
  cd /mnt/cdrom //进入光盘目录
 
u盘:
mkdir /mnt/usb;(注:创建挂载目录)
mount /mnt/sda1 /mnt/usb;(注:挂载U盘)
现在就可以使用U盘了,在/mnt/usb目录下的内容就是U盘里的内容了;
使用完后,用以下命令卸载U盘即可。
umount /mnt/usb
mount 列出系统所有的分区
mount -t iso9660 /dev/cdrom /mnt/cdrom 挂载光盘
mount -t vfat /dev/fd0/mnt/floppy 挂载软盘
mount -t vfat -o iocharset=utf8,umask=000 /dev/hda2 /mnt/hda2 挂载fat32分区
mount -t ntfs -o nls=utf8,umask=000 /dev/hda3/mnt/hda3 挂载ntfs分区
Linux-NTFS Project: http://linux-ntfs.sourceforge.net/
umount /mnt/hda3 缷载
注:挂载设备前,请先fdisk-l 看一下.

fdisk /mbr 删除GRUB

用户和用户组管理

切换用户
su -username

chmod命令:

1
2
3
4
5
chmod [-R] xyz 文件或目录
-R:进行递归的持续更改,即连同子目录下的所有文件都会更改
#同时,chmod还可以使用u(user)、g(group)、o(other)、a(all)和+(加入)、-(删除)、=(设置)跟rwx搭配来对文件的权限进行更改,编号是各种权限的数字代码,示例:
chmod 0755 file # 把file的文件权限改变为-rxwr-xr-x
chmod g+w file # 向file的文件权限中加入用户组可写权限

使用示例:

img

chown命令改变文件所有者:

1
2
3
4
5
6
7
8
chown [para]... [owner][:[group]] file...

-c 显示更改的部分的信息
 -f 忽略错误信息
 -h 修复符号链接
 -R 处理指定目录以及其子目录下的所有文件
 -v 显示详细的处理信息
 -deference 作用于符号链接的指向,而不是链接文件本身

使用示例:

img

chgrp命令,改变文件所属组:

1
2
3
4
5
6
-c 当发生改变时输出调试信息
-f 不显示错误信息
-R 处理指定目录以及其子目录下的所有文件
-v 运行时显示详细的处理信息
--dereference 作用于符号链接的指向,而不是符号链接本身
--no-dereference 作用于符号链接本身

使用示例:

img

useradd 命令建立用户账号:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
useradd [-mMnr][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-s ][-u ][用户帐号] 

-c #<备注>  加上备注文字。备注文字会保存在passwd的备注栏位中。 
  -d #<登入目录>  指定用户登入时的启始目录。
  -D # 变更预设值.
  -e # <有效期限>  指定帐号的有效期限。
  -f # <缓冲天数>  指定在密码过期后多少天即关闭该帐号。
  -g # <群组>  指定用户所属的群组。
  -G # <群组>  指定用户所属的附加群组。
  -m # 自动建立用户的登入目录。
  -M # 不要自动建立用户的登入目录。
  -n # 取消建立以用户名称为名的群组.
  -r # 建立系统帐号。
  -s # 指定用户登入后所使用的shell。
  -u # 指定用户ID。

使用示例:

img

usermod 修改用户信息:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
usermod -h
usermod [options] LOGIN

-c #后面接账号的说明,即/etc/passwd第五栏的说明栏,可以加入一些账号的说明
-d #后面接账号的家目录,即修改/etc/passwd的第六栏
-e #后面接日期,格式是YYYY-MM-DD也就是在/etc/shadow内的第八栏
-f #后面接天数,修改shadow的第七栏
-g #后面接主群组,修改/etc/passwd的第四个字段,即是GID的字段
-G #后面接附加群组,修改这个使用者能够支持的群组,修改的是/etc/group
-a #与 -G 合用,可增加附加群组的支持而非设定
-l #后面接账号名称。修改账号名称,/etc/passwd的第一栏
-s #后面接Shell的文件,例如/bin/bash或/bin/csh等等
-u #后面接 UID 数字,修改用户的UID /etc/passwd第三栏
-L #暂时将用户的密码冻结,让他无法登入。其实就是在/etc/shadow的密码栏前面加上了“!”
-U #将/etc/shadow 密码栏的“!”去掉

使用示例:

img

userdel 删除用户:

1
2
3
userdel [options] LOGIN
-f # 强制删除,包括用户的一切相关内容,这个参数是危险的参数,不建议大家使用。详细说明看MAN
-r # 删除用户的家目录和用户的邮件池

img

groupadd命令用于将新组加入系统:

1
2
3
4
5
6
groupadd [-g gid] [-o]] [-r] [-f] groupname

-g gid:指定组ID号。
-o:允许组ID号,不必惟一。
-r:加入组ID号,低于499系统账号。
-f:加入已经有的组时,发展程序退出。

使用示例:

img

groupdel命令删除组:

1
2
# 用于删除不再需要的组,如果指定的组中包含用户,则必须先删除组里面的用户>以后,才能删除组
groupdel [options] GROUP

使用示例:

img

sudo用来以其他身份来执行命令,预设的身份为root:

1
2
3
4
5
6
7
8
9
10
11
12
sudo(选项)(参数)

-b:在后台执行指令;
-h:显示帮助;
-H:将HOME环境变量设为新身份的HOME环境变量;
-k:结束密码的有效期限,也就是下次再执行sudo时便需要输入密码;。
-l:列出目前用户可执行与无法执行的指令;
-p:改变询问密码的提示符号;
-s:执行指定的shell;
-u<用户>:以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份;
-v:延长密码有效期限5分钟;
-V :显示版本信息。

使用示例:

img

passwd 设置用户的密码:

1
2
3
4
5
6
7
8
9
10
11
passwd [OPTION...] <accountName>
-k, --keep-tokens keep non-expired authentication tokens
-d, --delete delete the password for the named account (root only)
-l, --lock lock the named account (root only)
-u, --unlock unlock the named account (root only)
-f, --force force operation
-x, --maximum=DAYS maximum password lifetime (root only)
-n, --minimum=DAYS minimum password lifetime (root only)
-w, --warning=DAYS number of days warning users receives before password expiration (root only)
-i, --inactive=DAYS number of days after password expiration when an account becomes disabled (root only)
-S, --status report password status on the named account (root)

img

groups 显示用户所属组:

1
2
3
groups # 默认显示当前用户的组

groups hadoop2 # 显示hadoop2用户的组

使用示例:

img

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
使用超级管理员身份执行命令
sudo rm a.txt 使用管理员身份删除文件

# 表示权限用户(如:root),$ 表示普通用户
开机提示:Login:输入用户名
password:输入口令 用户是系统注册用户成功登陆后,可以进入相应的用户环境.
退出当前shell,输入:exit

useradd netseek 添加一个netseek用户
passwd netseek 给netseek这个用户设置密码.
(/etc/passwd /etc/group)
userdel netseek 删除账号
userdel -r netseek 删除账号连同自家目录.
[更详细的操作请参阅man page,和账号管理篇]

su在不退出登陆的情况下,切换到另一个身份
用法: su -l 用户名(如果用户名缺省,则切换到root状态)
  eg:su -l netseek (切换到netseek这个用户,将提示输入密码),加上-表示切换到用户的环境变量.

sudo 利用他可以执行root执行的权限

用户用过的命令和执行历史执行的命令
history 显示用户过去命用的命令
!!执行最近一次的命令

whoami,id,w,lastlog,users,groups
w 查看用户登陆信息
who 查看当前登陆用户
last 最近一个月用户登陆情况
lastlog 检查某特定用户上次登录的时间,并格式化输出上次登录日志/var/log/lastlog的内容
whoami 确认自己身份.
id 打印出自己的UID以及GID.(UID:用户身份唯一标识.GID:用户组身份唯一标识.每一个用户只能有一个唯一的UID和GID.)
users
groups 用户所归属的用户组查询;
finger -l netseek root
finger -s 或者直接finger
可以让使用者查询一些其他使用者的资料
  eg: finger //查看所用用户的使用资料
  finger root //查看root的资料

程序、线程管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
查看一个程序是否运行
ps -ef|grep tomcat 查看所有有关tomcat的进程

终止线程
kill -9 19979 终止线程号位19979的进程

查看进程
ps aux|grep java 查看java进程

ps aux 查看所有进程

查杀进程
ps aux
ps -ef |grep
kill -9
看看哪个进程占用的内存最大
ps -aux|sort +5n

将程序放在前后台执行
cp file1 file2 &
&与ctrl+z 你可以使用&或ctrl+z来将命令放在后台执行.
fg 是将放在后台执行的程序再放回前台.
jobs

ps 命令显示运行的进程,还会显示进程的一些信息如pid, cpu和内存使用情况等:
-A :所有的进程均显示出来
-a :不与terminal有关的所有进程
-u :有效用户的相关进程
-x :一般与a参数一起使用,可列出较完整的信息
-l :较长,较详细地将PID的信息列出

使用示例:

img

kill 命令用于终止进程,参数:

1
2
3
4
5
6
7
kill -signal PID

1:SIGHUP,启动被终止的进程
2:SIGINT,相当于输入ctrl+c,中断一个程序的进行
9:SIGKILL,强制中断一个进程的进行
15:SIGTERM,以正常的结束进程方式来终止进程
17:SIGSTOP,相当于输入ctrl+z,暂停一个进程的进行

使用示例:

img

killall 命令和参数:

1
2
3
4
5
6
7
killall [-iIe] [command name]

-i :交互式的意思,若需要删除时,会询问用户
-e :表示后面接的command name要一致,但command name不能超过15个字符
-I :命令名称忽略大小写
# 例如:
killall -SIGHUP syslogd # 重新启动syslogd

使用示例:

img

crntab命令是启动Linux定时任务的服务

1
2
3
4
service cron start # 启动cronjob
service cron stop # 停止cronjob
service cron restart # 重启cronjob
crontab -e # 编辑cronjob任务

使用示例:打开crontab -e后通过vi方式编辑任务列表

img

free 命令用于显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer:

1
2
3
4
5
6
7
8
9
free [参数]
-b  以Byte为单位显示内存使用情况。
-k  以KB为单位显示内存使用情况。
-m  以MB为单位显示内存使用情况。
-g 以GB为单位显示内存使用情况。
-o  不显示缓冲区调节列。
-s<间隔秒数>  持续观察内存使用状况。
-t  显示内存总和列。
-V  显示版本信息。

使用示例:

img

top 命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器:

1
2
3
4
5
6
7
8
9
10
top [参数]
-b 批处理
-c 显示完整的治命令
-I 忽略失效过程
-s 保密模式
-S 累积模式
-i<时间> 设置间隔时间
-u<用户名> 指定用户名
-p<进程号> 指定进程
-n<次数> 循环显示的次数

使用示例:

img

网络管理

防火墙相关命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
firewalld的基本使用
systemctl start firewalld #启用
systemctl status firewalld #查看状态
systemctl disable firewalld #停止
systemctl stop firewalld #禁用

systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。
启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl --failed

3.配置firewalld-cmd
查看版本: firewall-cmd --version
查看帮助: firewall-cmd --help
显示状态: firewall-cmd --state
查看所有打开的端口: firewall-cmd --zone=public --list-ports
更新防火墙规则: firewall-cmd --reload
查看区域信息: firewall-cmd --get-active-zones
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
拒绝所有包:firewall-cmd --panic-on
取消拒绝状态: firewall-cmd --panic-off
查看是否拒绝: firewall-cmd --query-panic


那怎么开启一个端口呢
添加
firewall-cmd --zone=public --add-port=80/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
重新载入
firewall-cmd --reload
查看
firewall-cmd --zone= public --query-port=80/tcp
删除
firewall-cmd --zone= public --remove-port=80/tcp --permanent

ping 用于确定主机与外部连接状态:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ping [参数] [主机名或IP地址]
-d 使用Socket的SO_DEBUG功能。
-f 极限检测。大量且快速地送网络封包给一台机器,看它的回应。
-n 只输出数值。
-q 不显示任何传送封包的信息,只显示最后的结果。
-r 忽略普通的Routing Table,直接将数据包送到远端主机上。通常是查看本机的网络接口是否有问题。
-R 记录路由过程。
-v 详细显示指令的执行过程。
<p>-c 数目:在发送指定数目的包后停止。
-i 秒数:设定间隔几秒送一个网络封包给一台机器,预设值是一秒送一次。
-I 网络界面:使用指定的网络界面送出数据包。
-l 前置载入:设置在送出要求信息之前,先行发出的数据包。
-p 范本样式:设置填满数据包的范本样式。
-s 字节数:指定发送的数据字节数,预设值是56,加上8字节的ICMP头,一共是64ICMP数据字节。
-t 存活数值:设置存活数值TTL的大小。

使用示例:

img

telnet 命令用来远程登录操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
telnet[参数][主机]-8 允许使用8位字符资料,包括输入与输出。
-a 尝试自动登入远端系统。
-b<主机别名> 使用别名指定远端主机名称。
-c 不读取用户专属目录里的.telnetrc文件。
-d 启动排错模式。
-e<脱离字符> 设置脱离字符。
-E 滤除脱离字符。
-f 此参数的效果和指定"-F"参数相同。
-F 使用Kerberos V5认证时,加上此参数可把本地主机的认证数据上传到远端主机。
-k<域名> 使用Kerberos认证时,加上此参数让远端主机采用指定的领域名,而非该主机的域名。
-K 不自动登入远端主机。
-l<用户名称> 指定要登入远端主机的用户名称。
-L 允许输出8位字符资料。
-n<记录文件> 指定文件记录相关信息。
-r 使用类似rlogin指令的用户界面。
-S<服务类型> 设置telnet连线所需的IP TOS信息。
-x 假设主机有支持数据加密的功能,就使用它。
-X<认证形态> 关闭指定的认证形态。

使用示例:

img

wget 是从远程下载的工具:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
wget [参数] [URL地址]

启动参数:
-V, –version 显示wget的版本后退出
-h, –help 打印语法帮助
-b, –background 启动后转入后台执行
-e, –execute=COMMAND 执行`.wgetrc’格式的命令,wgetrc格式参见/etc/wgetrc或~/.wgetrc

记录和输入文件参数:
-o, –output-file=FILE 把记录写到FILE文件中
-a, –append-output=FILE 把记录追加到FILE文件中
-d, –debug 打印调试输出
-q, –quiet 安静模式(没有输出)
-v, –verbose 冗长模式(这是缺省设置)
-nv, –non-verbose 关掉冗长模式,但不是安静模式
-i, –input-file=FILE 下载在FILE文件中出现的URLs
-F, –force-html 把输入文件当作HTML格式文件对待
-B, –base=URL 将URL作为在-F -i参数指定的文件中出现的相对链接的前缀
–sslcertfile=FILE 可选客户端证书
–sslcertkey=KEYFILE 可选客户端证书的KEYFILE
–egd-file=FILE 指定EGD socket的文件名

下载参数:
bind-address=ADDRESS 指定本地使用地址(主机名或IP,当本地有多个IP或名字时使用)
-t, –tries=NUMBER 设定最大尝试链接次数(0 表示无限制).
-O –output-document=FILE 把文档写到FILE文件中
-nc, –no-clobber 不要覆盖存在的文件或使用.#前缀
-c, –continue 接着下载没下载完的文件
–progress=TYPE 设定进程条标记
-N, –timestamping 不要重新下载文件除非比本地文件新
-S, –server-response 打印服务器的回应
–spider 不下载任何东西
-T, –timeout=SECONDS 设定响应超时的秒数
-w, –wait=SECONDS 两次尝试之间间隔SECONDS秒
–waitretry=SECONDS 在重新链接之间等待1…SECONDS秒
–random-wait 在下载之间等待0…2*WAIT秒
-Y, –proxy=on/off 打开或关闭代理
-Q, –quota=NUMBER 设置下载的容量限制
limit-rate=RATE 限定下载输率

目录参数:
-nd –no-directories 不创建目录
-x, –force-directories 强制创建目录
-nH, –no-host-directories 不创建主机目录
-P, –directory-prefix=PREFIX 将文件保存到目录 PREFIX/…
–cut-dirs=NUMBER 忽略 NUMBER层远程目录

HTTP 选项参数:
–http-user=USER 设定HTTP用户名为 USER.
–http-passwd=PASS 设定http密码为 PASS
-C, –cache=on/off 允许/不允许服务器端的数据缓存 (一般情况下允许)
-E, –html-extension 将所有text/html文档以.html扩展名保存
–ignore-length 忽略 `Content-Length’头域
–header=STRING 在headers中插入字符串 STRING
–proxy-user=USER 设定代理的用户名为 USER
–proxy-passwd=PASS 设定代理的密码为 PASS
–referer=URL 在HTTP请求中包含 `Referer: URL’头
-s, –save-headers 保存HTTP头到文件
-U, –user-agent=AGENT 设定代理的名称为 AGENT而不是 Wget/VERSION
–no-http-keep-alive 关闭 HTTP活动链接 (永远链接)
–cookies=off 不使用 cookies
–load-cookies=FILE 在开始会话前从文件 FILE中加载cookie
–save-cookies=FILE 在会话结束后将 cookies保存到 FILE文件中

FTP 选项参数:
-nr, –dont-remove-listing 不移走 `.listing’文件
-g, –glob=on/off 打开或关闭文件名的 globbing机制
–passive-ftp 使用被动传输模式 (缺省值).
–active-ftp 使用主动传输模式
–retr-symlinks 在递归的时候,将链接指向文件(而不是目录)

递归下载参数:
-r, –recursive 递归下载--慎用!
-l, –level=NUMBER 最大递归深度 (inf 或 0 代表无穷)
–delete-after 在现在完毕后局部删除文件
-k, –convert-links 转换非相对链接为相对链接
-K, –backup-converted 在转换文件X之前,将之备份为 X.orig
-m, –mirror 等价于 -r -N -l inf -nr
-p, –page-requisites 下载显示HTML文件的所有图片

递归下载中的包含和不包含(accept/reject):
-A, –accept=LIST 分号分隔的被接受扩展名的列表
-R, –reject=LIST 分号分隔的不被接受的扩展名的列表
-D, –domains=LIST 分号分隔的被接受域的列表
–exclude-domains=LIST 分号分隔的不被接受的域的列表
–follow-ftp 跟踪HTML文档中的FTP链接
–follow-tags=LIST 分号分隔的被跟踪的HTML标签的列表
-G, –ignore-tags=LIST 分号分隔的被忽略的HTML标签的列表
-H, –span-hosts 当递归时转到外部主机
-L, –relative 仅仅跟踪相对链接
-I, –include-directories=LIST 允许目录的列表
-X, –exclude-directories=LIST 不被包含目录的列表
-np, –no-parent 不要追溯到父目录
wget -S –spider url 不下载只显示过程

使用示例:

img

ifconfig 命令用来查看和配置网络设备。当网络环境发生改变时可通过此命令对网络进行相应的配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# ifconfig 显示或设置网络设备,可以查看当前ip,类似于windows里的ipconfig
ifconfig [网络设备] [参数]

up 启动指定网络设备/网卡。
down 关闭指定网络设备/网卡。该参数可以有效地阻止通过指定接口的IP信息流,如果想永久地关闭一个接口,我们还需要从核心路由表中将该接口的路由信息全部删除。
arp 设置指定网卡是否支持ARP协议。
-promisc 设置是否支持网卡的promiscuous模式,如果选择此参数,网卡将接收网络中发给它所有的数据包
-allmulti 设置是否支持多播模式,如果选择此参数,网卡将接收网络中所有的多播数据包
-a 显示全部接口信息
-s 显示摘要信息(类似于 netstat -i)
add 给指定网卡配置IPv6地址
del 删除指定网卡的IPv6地址
<硬件地址> 配置网卡最大的传输单元
mtu<字节数> 设置网卡的最大传输单元 (bytes)
netmask<子网掩码> 设置网卡的子网掩码。掩码可以是有前缀0x的32位十六进制数,也可以是用点分开的4个十进制数。如果不打算将网络分成子网,可以不管这一选项;如果要使用子网,那么请记住,网络中每一个系统必须有相同子网掩码。
tunel 建立隧道
dstaddr 设定一个远端地址,建立点对点通信
-broadcast<地址> 为指定网卡设置广播协议
-pointtopoint<地址> 为网卡设置点对点通讯协议
multicast 为网卡设置组播标志
address 为网卡设置IPv4地址
txqueuelen<长度> 为网卡设置传输列队的长度

# 重启网卡
service network restart(/etc/rc.d/init.d/network restart)
ifdown eth0 关闭网卡
ifup eth0 开启网卡

# 查看路由表
route -n 查看路由表
route [-f] [-p] [Command [Destination] [mask Netmask] [Gateway] [metric Metric]] [if Interface]]
-c # 显示更多信息
-n # 不解析名字
-v # 显示详细的处理信息
-F # 显示发送信息
-C # 显示路由缓存
-f # 清除所有网关入口的路由表。
-p # 与 add 命令一起使用时使路由具有永久性。
route add -net 192.168.20.1 netmask 255.255.255.0 dev eth0


#查看端口占用情况
netstat -tln | grep 8080 查看端口8080的使用情况
netstat 查看网络连接情况
netstat -i 显示网卡运行情况
netstat -r 查看主机的路由列表

#查看端口属于哪个程序
lsof -i :8080


traceroute

使用示例:

img

img

系统命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
  hostname 显示主机名
hostname -i 显示当前主机名的IP.

# 系统集成管理菜单.
setup 系统服务管理命令
ntsysv 设置系统服务

# 改变程序执行的优秀级
nice 设置优先权 nice-n -5 vi & 用root给一个nice值为-5,用于执行vi
renice 调整已存在优先权

# 模块相关的命令
lsmod 显示已经载入系统的模块
depmod 分析可载入系统的相依性
modinfo 显示kernel模块的信息
insmod 载入模块
modprobe 自动处理可载入模块
rmmod 删除模块

chkconfig --list 显示各种服务的状态,利用chkconfig可以轻松管理init脚本.

dmesg |more 显示开机信息(查看系统启动时硬件信息)

uname 查看linux系统信息
参数:-a 所有信息 -r 版本号 -n 主机名

# 查看linux系统占用的资源(top,free,uptime)
top 查看后台程序,监控系统性能
top -d 2 每两秒列新一次
top -d -2 -p3690 查看某个PID
top -b -n 2 >/tmp/top.txt 将top的信息进行2次,然后将结果输出到/tmp/top.txt

free -m 查看系统内存使用情况

uptime 显示目前系统开机时间(查看开机多久,多少人登陆,过去1,5,15分钟系统的负载)

关机和重启

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
shutwond [-t 秒数] [-rkhncff] 时间 [警告信息]
-t 秒数:设置在切换至不同的runlevel之前,警告和删除两信号之彰间的延迟时间(秒)
-k 发出警告信息,但不是真的要shutdown
-r shutdown这后重新开机
-h shutdown这后开机
-n 不经过init,由shutdown命令本身来做开机工作(不建议你使用)
-f 重新开机时,跳过fsck指令,不检查文件系统.
-F 重新开机时,强迫做fsck检查.
-c 将已经正在shutdown的动作取消
shutdown -h now 立刻关机,其中now相当于时间为0,halt,poweroff也可以关机,或者直接init 0
shutdown -h 20:30 系统将在今晚的8:30关机
shutdown -h +10 系统再过十分钟后自动关机.
shutdown -t3 -r now 立刻重新开机,但在警告和删除processes这间,
shutdown -k now 'Hey! Go away! now...' 发出警告信息,但没有真的关机.

reboot
shutdown -r now 几乎与reboot相同,不关建议用reboot执行如下:
shutdown -r +30 'The system wiil reboot'
shutdown -r +10 'Hey!Go away!' 10分钟后系统重启.
\#sync; sync; sync; reboot 注:sync将数据同步写入硬盘
halt命令相当于shutdown -h now ,表示立刻关机。
reboot命令相当于shutown -r now ,表示立刻重起。

如何改变启动模式运行级别

1
2
3
4
5
6
7
8
9
10
11
12
13
vi /etc/inittab
将5改成3,启动后就可以变成字符模式。
startx 或者 init 5 就可以进入图形化界面.
runlevel 显示当前运行级别

如何切换至单用户模式
利用telinit或init(其实telinit只是一个synbollink to init)
telinit 1 或者 init S 即可,当然telinitS也是可以的.

如何使ctrl+alt+del 三键失效的方法
\#vi /etc/inittab
在ca::ctrlaltdel:/sbin/shutdonw -t3 -r now之前加上注释#
然后执行#telinit q ,参数q是要telinit重新检查一次/etc/inittab

TAB 巧用tab键,当你不知道文件或命令的全名是请连续按两下tab键.

其他命令

打印信息
echo $JAVA_HOME 打印java home环境变量的值

java 常用命令
java javac jps ,jstat ,jmap, jstack

其他命令
svn git maven

设置Linux时间和日期

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
date 命令("date MMDDhhmmYYYY.ss")
2006年7月24日12:37,30秒
date 072412372006.30
date -s 20:30:30 #设置系统时间为20: 30:30
date -s 2006-7-24 #设置系统时期为2006-7-24
clock -r #对系统Bios中读取时间参数
clock -w #将系统时间(如由date设置的时间)写入Bios

date [参数]... [+格式]

必要参数:
%H 小时(以00-23来表示)。
%I 小时(以01-12来表示)。
%K 小时(以0-23来表示)。
%l 小时(以0-12来表示)。
%M 分钟(以00-59来表示)。
%P AM或PM。
%r 时间(含时分秒,小时以12小时AM/PM来表示)。
%s 总秒数。起算时间为1970-01-01 00:00:00 UTC。
%S 秒(以本地的惯用法来表示)。
%T 时间(含时分秒,小时以24小时制来表示)。
%X 时间(以本地的惯用法来表示)。
%Z 市区。
%a 星期的缩写。
%A 星期的完整名称。

%b 月份英文名的缩写。
%B 月份的完整英文名称。
%c 日期与时间。只输入date指令也会显示同样的结果。
%d 日期(以01-31来表示)。
%D 日期(含年月日)。
%j 该年中的第几天。
%m 月份(以01-12来表示)。
%U 该年中的周数。
%w 该周的天数,0代表周日,1代表周一,异词类推。
%x 日期(以本地的惯用法来表示)。
%y 年份(以00-99来表示)。
%Y 年份(以四位数来表示)。
%n 在显示时,插入新的一行。
%t 在显示时,插入tab。
MM 月份(必要)
DD 日期(必要)
hh 小时(必要)
mm 分钟(必要)
ss 秒(选择性)

选择参数:
-d<字符串>  显示字符串所指的日期与时间。字符串前后必须加上双引号。
-s<字符串>  根据字符串来设置日期与时间。字符串前后必须加上双引号。
-u  显示GMT。

img

自动化执行

1
2
3
4
5
6
7
8
9
10
11
12
at 执行一次
crontab 定时循环执行程序
crontab 介绍
1 以root登录
2 # crontab -e
3 加入一行
1 */12 * * * /usr/sbin/ntpdate pool.ntp.org
分钟 (0-59)
小時 (0-23)
日 期 (1-31)
月份 (1-12)
星期 (0-6)//0代表星期天

编译c/c++文件

1
2
3
gcc
gcc -v 查看GCC版本
gcc -o test test.c 2>errfile 编译test.c时若有错误信息,则将错误信息重定向到errfile

dd命令备份

1
2
3
4
5
6
7
8
dd if="input_file" of="out_file"bs="block_size" count="number"
参数:
-if:就是input file可以是设备
-of:就是output file也可以是设备
-bs:规划的一个block的大小,如果没有设定时,预设是512bytes
-count:多少个bs的意思.

dd if=/etc/password of=/tmp/passwd.bak 备份

数据库启动

1
2
3
4
5
6
7
8
9
10
11
# 启动mysql:
service mysqld start(/etc/rc.d/init.d/mysqld start)
mysql -uroot -p 输入密码即可操作mysql数据库.

# 启动Oracle
su - oracle
$lsnrctl stop
$lsnrctl start
sqlplus /nolog
conn /as sysdba(connected)
startup

安装软件包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
rpm包安装:
rpm -ivh xxx.rpm 安装rpm包
rpm -qa --last | less 根据安装日期显示已经安装的包
rpm -qa |grep mysql -i 查询系统是否安装mysql包(-i,忽略大小写)
rpm-e 删除安装的软件包
rpm -e mysql* --nodpes 强制删除相关的软件包
rpm--test 测试安装
rpm-qi 查询mysql套件的说明资料
rpm -qpl xxx.rpm 查看rpm包内含的内容.
rpm-qc[d] 设定档与说明档
rpm-Uvh 升级安装
rpmbuild --bb SPECS/xxx.spec 重新装将xxx.spec编译成rpm包.
rpmbuild --rebuild packagename.src.rpm 重新把.src.rpm编译成rpm包.

源码编译安装(经典)
./configure 检查系统信息(./configure --help | more 帮助信息,可以看到相关的参数设定)
makeclean 清除之前留下的文件
make 编译
makeinstall 安装
注:源码包安装,一般先将文件解压,安装过程大致上面几步,具体说明一般见解压后目录里的(INSTALL,READEME说明.)

禁止删除

1
2
chattr +i filename 禁止删除,chattr -i filename 取消禁止
lsattr 查看隐藏档属性

grep命令

该命令常用于分析一行的信息,若当中有我们所需要的信息,就将该行显示出来,该命令通常与管道命令一起使用,用于对一些命令的输出进行筛选加工等等,比如可以加在ps, tail, cat后面

它的简单语法为

1
grep [-acinv] [--color=auto] '查找字符串' filename

使用示例:

img

ln 命令

是为某一个文件在另外一个位置建立一个同步的链接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 建立软连接
ln [-sf] source target
ln souce-file hard-link
ln -sf source-file soft-link
s表示软连接,f表示,若有同名文件在,则将它覆盖过去.
注:硬链接不能为目录创建,只有文件才能创建硬链接。

Linux文件系统中,有所谓的链接(link),我们可以将其视为档案的别名,而链接又可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。

软链接:
1.软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
2.软链接可以 跨文件系统 ,硬链接不可以
3.软链接可以对一个不存在的文件名进行链接
4.软链接可以对目录进行链接

硬链接:
1.硬链接,以文件副本的形式存在。但不占用实际空间。
2.不允许给目录创建硬链接
3.硬链接只有在同一个文件系统中才能创建

ln [参数][源文件或目录][目标文件或目录]

必要参数:
-b 删除,覆盖以前建立的链接
-d 允许超级用户制作目录的硬链接
-f 强制执行
-i 交互模式,文件存在则提示用户是否覆盖
-n 把符号链接视为一般目录
-s 软链接(符号链接)
-v 显示详细的处理过程

选择参数:
-S “-S<字尾备份字符串> ”或 “--suffix=<字尾备份字符串>”
-V “-V<备份方式>”或“--version-control=<备份方式>”

使用示例:

img


Copyright 2021 sunfy.top ALL Rights Reserved

...

...

00:00
00:00