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
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
总结:
     文件系统:基础、文件、目录管理,用户及权限管理、bash基本特性: 命令历史、hash、命令补全、路径补全、glob、快捷键、IO重定向、管道、变量、vim、bash编程、变量、配置文件、算术运算、测试、grep,fgrep,egrep、测试、find、特殊权限进程安全上下文、bash编程。
 
     touch,state
 
     mkdir,tree,rmdir,install,cp,rm,mv
 
     用户: 用户认证   useradd,usermod,userdel passwd,chage
     组;用户授权机制 groupadd,groupmod,groupdel gpasswd
         chfn chsh finger su id
         pwck 
 
     权限: chmod , chgrp , chown 
         --reference=IFILE
         -R -L 
 
     命令历史:启动时,将HISTFILE变量中的文件中的内容加载至内。停止时,将历史中新增加的条目同步至HISTFILE变量中的文件中
     hash: 运行命令时,bash提请内核运行为一个进程,bash在PATH变量中查找命令的代码,记录hash中。下次查找时,先找hash中(O1标准),再找PATH
     命令补全: 从PATH变量查找
     路径补全: 从用户所给目录中找
     glob: *任意长度任意字符,? 任意单个字符 , [] 任意范围内的任意单个字符[abc] 或a或b或c , [^] 任意范围外的任意单个字符
     快捷键: Ctrl + a 行首, Ctrl + e 行尾, Ctrl + l 清屏, Ctrl + s 暂停屏幕, Ctrl + q 取消暂停, Ctrl + c 撤消命令执行
     管道:任何一个打开的文件,都有一个文件描述符追踪。上一个文件的标准输入作为下一个文件的标准输出。最后一个命令在当前shell的子进程中运行
     IO:  覆盖,追加, set  -C 关闭  ,合并 &> , > FILE  2 >& 1  , > FILE1  2 > FILE1 
     变量: 过程式编程: 选择、循环、顺序 以指令为中心组织数据。 对象式编程:以数据为中心组织指令。 bash过程式编程: magic number ,纯文本 , 
         变量类型 内部数据的类型
             弱类型 bash , 不申明,直接引用,赋值 ,直接运算隐式转换
             强类型 必须申明
 
         变量类型的作用:
             内部数据的存储格式
             数据的范围
             参与的运算
 
     vim 
         使用: 
             vim + FILE
             vim -o | -O FILE1 FILE2
                 Ctrl + w 松手后按 : 上,下,左,右
 
             vim FILE1 FILE2 ...
                 :first :pre :next :last
 
         特性:
             syntax on|off
             set  ai|noai
             set  ic|noic
             set  hlsearch | nohlsearch
             set  tabstop=#
             set  nu|nonu
 
         命令模式
             光标跳转:
                 hjkl
                 w 行首
                 e 不在行尾,当前单词行尾。在行尾,下个单词行尾。
                 b 不在行首,当前单词行首。在行首,上个单词行首。
 
                 [] {} 
 
                 [#][]x
                 [#]r | R
 
                 d[] | dd 删除
                 y[] | yy 复制
                 c[] | cc 删除并进入INSERT模式
      
            其他操作
                 视图: v | V
 
             进入编辑模式
                 i,I
                 a,A
                 o,O
 
                 c[],cc
 
             保存并退出文件: ZZ
 
         退出编辑模式: ESC
 
         未行模式: 在命令模式中输入 :
             :地址定界s@PATTERN@要替换的内容@g/i
                 地址定界:
                     % 全文
                     # 第#行
                     # 1 ,# 从# 1 至#行的所有内容
                     /part1/,/part/ 第part1模式所匹配到的内容所在的行起始至第part所匹配的到的内容所在的行结束。正则表达式的元字符
                     #,/part/
                     /part/,#
                     $ 最后一行
                         #,$ 第#至$行
                         /part/,$ 
 
                 PATTERN:
                     支持正则表达式
                         .
                         * : .*
                         \? , \+
                         \{m,n\} , \{m\},\{n\}
 
                     支持(),正则表达式引擎将括号所匹配到内容保存至内置变量中,依次为\ 1 ,\ 2 ,....
 
                 要替换的内容:
                     支持后向引用
                     \ 1 ,\ 2 ,....
 
                 g/i
                     g: 当作行有多次出现模式匹配至的内容时,只替换一处
                     i: 忽略PATTERN的大小写匹配
 
             退出文件:
                 :wq 保存文件内容并退出
                 :q  不保存文件内容并退出
 
     bash编程
         if  CONDITION; then
             if -ture      ## CONDITION执行状态结果为 0 时,执行此分支
         fi
 
         if  CONDITION; then
             if -ture
         else 
             if - false      ## CONDITION执行状态结果非 0 时,执行此分支
         fi
 
         if  CONDITION; then
             if -ture
         elif CONDITION; then
             if -ture
         elif CONDITION; then
             if -ture
         ...
         else 
             all- false     ## 以上条件均不满足时,执行此分支。只要满足其中一个分支,执行后会自动退出  
         fi
 
     变量
         本地变量 对当前shell有效,对其他无效
         环境变量 对当前shell及子shell有效,对其他终端无效
         局部变量 在调用函数运行的生命周期中变量有效
         位置变量 类似于后向引用,正则表达式引擎存储括号中匹配到内容至内置的变量中。$ 1 ,$ 2 ,.... 存储向脚本传递的对应位置的参数,方便调用
         特殊变量 $#,$@,$*,$? $*: 当作一个整体。 $@: 参数独立存在。 $?: 当作命令的返回值
 
         本地变量
             赋值变量: name=value
                 将value值存储至name变量名所表示的内存空间中
 
                 当value有空格时,需要用引号: name= "1 2 3"
 
             查看变量:  set  (本地和环境)
 
             引用变量: ${name} 或 $name
                 ${name} 容易与变量名混淆的字符,能作为变量名存在的字符和变量在一起时,需要用到引号
                     name=pig
                     echo  "there are some $names"
                     echo  "there are some ${name}s"
                 $name 不会产生混淆时,可以使用$name
 
         环境变量
             赋值变量: declare -x name=value , export name=value
                 1 )变量引用实现赋值
                     name=$mingetty
 
                     引用后,存回原处: name=$name
                     引用后,存回别处: xue=$name
 
                 2 )命令引用实现赋值
                     name=$(COMMAND)
                     name=`COMMAND`
 
                 3 )纯字符
                     name=value
 
             查看变量
                 export
                 printenv
                 env
 
             引用变量
                 $name
 
         局部变量: 调用函数片段的生命周期内有效
 
         位置变量
             $ 0 : 命令本身
             $ 1 : 向命令传递的第一个参数
             $ 2 : ...
 
             shift # 换港符
 
         特殊变量
             $* 调用所有传递给命令的参数,所有参数当作一个整体
             $@ 调用所有传递给命令的参数,每个参数独立存在
             $# 传递给命令的参数的个数
             $? 命令的执行状态结果
 
     配置文件
         全局: profile类
             功能:
                 1 ) 脚本
                 2 ) 环境变量
             配置文件
                 /etc/profile, /etc/profile.d /*.sh, ~/.bash_profile
 
         个人: bashrc类   
             功能:
                 1) 别名
                 2)本地变量
 
             配置文件
                 /etc/bashrc, ~/.bash_bashrc
 
         登陆式
             /etc/profile  --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
             1) su - user 或 su -l user
             2) 终端通过账号密码
 
         非登陆式
             ~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh
             1) su user
             2) 脚本
             3) 图形界面下启动的终端
 
         读取配置文件
             1). 或 source 多次重读时,会重复出现(有副作用)
             2)重新登陆终端 
 
     算术运算:
         + - * / % 
         let A=$B+$C
         变量引用实现赋值
             $[$B+$C]
             $(($B+$C))
         命令引用实现赋值
             $(expr $A % $B)
                 注意: $(expr $A \* $B)
 
         变量取模:
             let A=$RANDOM%$B
 
 
     测试
         test EXPRESSION
         [ EXPRESSION ]
         [[ EXPRESSION ]]
 
         数值测试:
             -eq,-ne
             -lt,-le
             -gt,-ge
 
             例如:
                 test $A -lt $B
                 [ $A -eq $B ]
                 [[ $A -gt $B ]]
 
         字符测试: 必须都用引号,除了PATTERN,且必须用[[]]
             ==
             !=
             ~
 
             例如:
                 test "$A" == "$B"
                 [ "1" == "$A" ]
                 [[ "$A" ~ PATTERN ]] PATTER支持正则表达式
 
             -z STRING  是否存在且为空
             -n STRING  是否存在且不为空
 
     fgrep,grep,egrep
 
         COMMAND PATTERN file
             用PATTERN逐行匹配file中的每一行,将PATTERN匹配到的字符所在的行显示到标准输出
 
             PATTERN 由特殊的元字符组成
 
         不同工具使用不同的正则表达式引擎,或不同的特殊元字符
             fgrep   纯文本字符
             grep    正则表达式元字符
             egrep   扩展正则表达式元字符
             perl    perl正则表达式元字符
 
         正则表达式字符:
             .  任意单个字符
             *  对前面单个字符任意次数: .*
             \? 前面单个字符0或1次
             \+ 前面单个字符至少1次
             \{m,n\}
             \{m,\}
             \{,n\}
             \(\) 支持后向引用,正则表达式引擎将括号中的模式匹配到的内容存储在内置的变量中
 
         扩展正则表达式字符
             .
             *
             ?
             +
             {m,n}
             {m,}
             {,n}
             ()
             | 分组 : c|Cat 表示 c或 Cat  (c|C)at表达cat或Cat
 
     文件测试
         -t fd
         -s 文件有内容
         [ -N FILE ] 最近一次查看文件后,是否被修改(重定向或编辑过)
         [ FILE -ef IFLE ] 指向同一设备的同一inode
         [ FILE -nt IFLE ] FILE是否比IFLE更新或修改时间戳比IFLE的时间戳离现在更近
         -ot
 
         -O | -G
 
         -[fdbcLhsp]
         -a | -e
 
         -r | -w | -x
 
     find命令
         -ls , -delete , -fls /path/to/somefile 
         -exec ,-ok
 
         find -exec {} \; 所有文件
         find | xargs -I {} command {} 单独的文件
 
             {} 代表每一个匹配到的文件
 
         -user USERNAME , -group GRPNAME 
         -nouser , -nogroup
         -uid UID , -gid GID
 
         -name "glob_expr"
         -iname "glob_expr"
         -regex "expression"
         -iregex "expression"
 
         -type {f|d|c|b|l|s|p}
         -size [+|-]#[KMG]
         -perm [\|-]#
 
         \( expr -a expr \)
         -not \( expr -a expr \) 相当于  -not expr -o -not expr
         \( expr -o expr \)
         -not \( expr -o expr \) 相当于 -not expr -a -not expr
 
     用户对文件的权限
         用户同文件的属主,应用属主的权限 
         同文件的属组,应用属组的权限 
         应用其他用户的权限
 
     进程的安全上下文
         当用户对文件有权限运行为一个进程
         进程的属主同用户名
 
         进程的属主同文件的属主,应用属主的权限
         同文件的属组,应用属组的权限 
         应用其他用户的权限
 
         r 文件可用文件查看类命令查看 目录可用ls查看  
         w 文件可修改 目录可创建或删除目录中的文件
         x 文件可运行为一个进程  目录: 可用ls -l 或cd
 
     特殊权限
         suid,sgid,sticky
         000 0 
         001 1 
         010 2
         011 3
         100 4
         101 5
         110 6
         111 7
 
         suid: 当文件有suid权限时,文件被运行为一个进程后,其进程的属主为文件的的属主
         sgid:  当目录有sgid权限时,任何用户在其目录下创建的文件的属组同目录的属组
         sticky: 当目录有sticky权限时,目录中不同用户的文件只能由文件对应的用户删除
 
         权限位的映射:
             当存在x时,为小写
             当不存在x时,为大写
 
                 例如:
                     文件为: rw- r-- ---
                     给予suid权限后: rwS r-- ---
 
                     文件为: rwx r-- ---
                     给予suid权限后: rws r-- ---
 
     编程
         for i in 列表; do
             循环体
         done
 
         列表:
             1) 直接给出
             2) glob /etc/lib/*
             3) 命令生成 $(ls /)
             4) 命令 $(seq start step end) $(seq 1 2 100)
             5) {start..end} {1..10}
 
     系统管理
         磁盘管理
             分区、查看、调整、格式化、挂载、编程     
         RAID,LVM2
         程序包管理
             安装、重装、升级、降级、卸载、查询、检验、数据库、缓存    
         进程管理
             htop,vmstat,glances
         网络管理
             命令行、配置文件、图形
         系统启动流程
             加电 --> 自检 --> Bootsquence(MBR) --> MBR工作 --> kernel工作 --> 只读切换挂载rootfs --> 运行init,init工作
 
         grub命令
                         grub-install, chroot /mnt/sysimage --> root(hd0,0) --> setup (hd0)
 
         磁盘管理
             分区、查看、调整、格式化、挂载、编程
         RAID,LVM2
             mdadm -C /dev/md0 -a yes -l {1,0,5,10} -n # -x # /dev/sda{1,2,3}
             mdadm -D /dev/md0
             mdadm -S /dev/md0
             mdadm /dev/md0 -f /dev/sda1
             mdadm /dev/md0 -r /dev/sda1
             mdadm /dev/md0 -a /dev/sdb1(fd)
 
             /dev/sda{1,2,3}
             pvcreate /dev/sda{1,2,3}
             vgcreate -s #[KMG] VGNAME /dev/sda{1,2,3}
                 vgremove VGNAME
                 vgextend VGNAME /dev/sda4 (8e)
                 pvmove /dev/sda3 ; vgreduce /dev/sda3
 
             lvcreate -L #[KMG] -n LVNAME VGNAME
                 lvpath:
                     /dev/mapper/VGNAME-LVNAME
                     /dev/VGNAME/LVNAME
             lvcreate -L #[KMG] -s -n LVNAME_snap -p r lvpath
 
             扩展:
                 lvextend -L [+]#[KMG] lvpath
                 resize2fs lvpath 
             缩减
                 umount lvpath
                 e2fsck -fy lvpath
                 resize2fs lvpath [-]#[KMG]
                 lvreduce -L [-]#[KMG] lvpath
                 mount lvpath DIR
 
         程序包管理
             安装、重装、升级、降级、卸载、查询、检验、数据库、缓存
                 安装: 
                     rpm -ivh FILE.rpm
                     yum install
                     dnf install
                     apt-get install
 
                 重装:
                     rpm -ivh --replacepkgs
                     yum reinstall
                     dnf reinstall
                     apt-get reinstall
 
                 升级:
                     rpm -Uvh(安装或升级) -Fvh(仅能升级)
                     yum update
                     dnf update
                     apt-get update
 
                 降级
                     rpm -Uvh | -Fvh --oldpackages
                     yum downgrade
                     dnf downgrade
                     apt-get downgrade
 
                 卸载
                     rpm -e
                     yum remove
                     dnf remove
 
                 查询
                     仓库信息 yum|dnf repolist
                     程序包: 
                         rpm -q -a
                         rpm -q -f CAPABILITY  文件由哪个包所提供
                         rpm -q --whatprovides CAPABILITY  文件或功能由哪个包所提供 yum|dnf --whatprovides CAPABILITY
                         rpm -q --whatrequires CAPABILITY
 
                     包内的信息
                         rpm -q -i
                         rpm -q --changlog
                         rpm -q -L
                         rpm -q -c, -d
                         rpm -q --scripts | --triggers | --conflicts
                         
                         rpm -R 包依赖的功能            yum deplist 
                         rpm --provides 包提供的功能
                         
                         yum info
                         
                 校验
                     rpm -V 
                     rpm --import GPG_FILE
 
                 数据库
                     rpm --initdb   初始化,存在时,不执行任何操作
                     rpm --rebuildb 重建
 
                 缓存
                     yum clean {all|metadata|packages}
 
                 yum --disablerepo= expr_glob --enablerepo= expr_glob
                 yum --downloadonly --downloaddir=DIR
                     --noplugins
                     --nogpgcheck
                     --version
                     -q
 
                 rpm --nodigest | --nosignature | --import
                     --nodeps
                     --noscripts
                     --nofiledigest
                     --nomd5
                     -d
                     -c
                     -l
                     --force
 
         进程管理
             htop,vmstat,glances
 
         网络管理
             命令行、配置文件、图形
                 address:
                     192.168.1.1/24 或 192.168.1.1 255.255.255.0
             ifconfig eth0 address [up|down]
             ifconfig [IFACE] [up|down]
             ifconfig IFACE metric N | mtu N | broadcast BROADCAST | multicast
 
             ip addr 
                 show|flush [dev IFACE] [label LABEL] [scope {global|link|host}]  [primary|secondary] 
                add|del address dev IFACE [broadcast BROADCAST] [label LABEL] [scope {global|link|host}]
 
             route add|del -host|-net address gw GW [dev IFACE] [scope {global|secondary}]  
             ip route add|del address via VIA  dev IFACE  [src SRC] [mtu MTU]
             ip route show|flush via VIA [dev IFACE] src SRC 
 
             ip link show up|dev IFACE
             ip link set 
                 [ dev IFACE up|down ]
                 arp on | arp off
                 multicast on | multicast off
 
             netstat | ss
                 -t 、 -u 、 -w 
                 -a , -l , -n , -p
 
                 netstat -i
 
                 ss -m | -o STATE EXPRESSION
 
                     STATE
                         established
                         listen
 
                     EXPRESSION
                         '( dport = :ssh or sport = :ssh )'
 
         系统启动流程
             加电 --> 自检 --> Bootsquence(MBR) --> MBR工作 --> kernel工作 --> 只读切换挂载rootfs --> 运行init,init工作
 
             1、CPU自举 ,装载ROM特定地址空间中的特定指令,完成自检,显示BIOS界面
             2、依据BIOS配置,从上至下查找第一个有MBR的设备或能模拟MBR的设备,完成系统引导
                 磁盘: MBR
                 网卡: 通过网卡发送广播,找到dhcp服务器,获取IP和tftpIP,从tftp获取引导程序
 
             3、MBR工作
                 1)找到MBR,运行MBR,在MBR后有一段空间作为1.5阶段(安装时,自动将1.5阶段放在MBR之后,是os所在分区的文件系统的驱动)
                 2)step1.5,bootloader通过1.5找到2
                 3)step2,提供菜单,将用户选择的内核及ramdisk加载至内存中, 将控制权交给kernel
 
             4、kernel工作
                 1)自解压、展开
                 2)探测硬件
                 3)加载驱动(包括ramdisk)
 
             5、ro挂载rootfs
 
             6、运行用户空间第一个程序init
                 设定默认启动选项
                 1)系统初始化
                 2)启动或关闭服务
                 3)打印登陆提示符(字符终端或图形终端)
 
             bootloader
                 windows: NT loader
                 Linux:
                     1) LILO Linux loader
                     2) grub grand uniform boot 
                         1系 CentOS 5,6
                         2系 CentOS 7 (完成重写)
 
             ramdisk分类
                 1)CentOS 5   ramdisk 将ramdisk加载至磁盘中时,内核将其当作磁盘,会再缓冲一次 
                 2) CentOS 6,7 ramfs   将ramfs加载至磁盘中时,内核直接读取
 
             init分类
                 CentOS 5 init 配置文件: /etc/inittab   
                     1、大量进程创建、销毁
                     2、进程的依赖性
 
                 CentOS 6 upstart --> init(重命名) 配置文件: /etc/inittab(兼容centos5) /etc/init/*.conf
                     (BUS)消息总线进行进程间通信,让互相依赖的进程能接近并行起动进程。
                         dbus机制解决进程间的依赖关系
 
                 CentOS 7 systemd
                     只启动开机需要的服务,其他服务只是告诉你启动了,实际并没有启动。而是在第一次访问时,在临时启动,可实现秒级别启动。
 
 
         进程管理: htop、glances、vmstat
             top:
                 命令选项: -d 、-b 、-n
                     -d # 刷新间隔
                     -b   分批次显示
                     -n # 显示多少个批次
                 内建命令: s,k,q l,t,1,m
                     s 刷新间隔高速
                     k 杀进程
                     q quit
                     l uptime
                     t task and cpu
                     1 cpus
                     m mem and swap
 
                 top - 15:01:32 up 2 days,  4:12,  4 users,  load average: 0.53, 0.44, 0.29
                 Tasks: 137 total,   1 running, 136 sleeping,   0 stopped,   0 zombie
                 Cpu(s):  0.0%us,  0.5%sy,  0.0%ni, 99.3%id,  0.0%wa,  0.0%hi,  0.2%si,  0.0%st
                 Mem:   1460312k total,  1403796k used,    56516k free,   135724k buffers
                 Swap:  2047996k total,     1268k used,  2046728k free,  1129308k cached
 
                 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND               
 
                 uptime命令: l 控制显示
                     15:01:32 当前时间
                     up 2 days 系统在线时长
                     4 users  在线用户数
                     load average: 0.53, 0.44, 0.29 
                         过去1,5,15分钟的平均负载
 
                 控制CPU及TASK显示: t
                     Tasks: 
                         137 total, 总进程数 
                           1 running, 
                           136 sleeping,   
                           0 stopped,   
                           0 zombie
                     Cpu(s):   每个CPU,1
                         0.0%us,  
                         0.5%sy,  
                         0.0%ni, 
                         99.3%id,  
                         0.0%wa,  
                         0.0%hi,  
                         0.2%si,  
                         0.0%st
 
                 控制Mem及Swap显示: m
                     Mem:   1460312k total,  1403796k used,    56516k free,   135724k buffers
                     Swap:  2047996k total,     1268k used,  2046728k free,  1129308k cached
 
         htop (Fedora-EPEL)
             a affinite cpu 缓存命令率
             l list  列出进程打开的文件
             s systemcall 进程发起的syscall
 
         glances
             服务端: glances -s -B 192.168.1.2 -p 8888 -P 123
             客户端: glances -c -p 8888 -P 123 192.168.1.2
 
             b 以字节显示网络速率
             m/n/d 控制mount,network,disk模块的显示
             t # 延迟间隔
             1 每个cpu信息单独显示
                 
             -f /path/to/somefile galance显示的结果保存至文件中
             -o {HTML|CSV} 文件的格式
 
         vmstat  [delay [count]]
             delay 刷新延迟
             count 刷新次数
 
             -s 显示内存信息
 
             procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
              r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
              2  0   1268 695236 169916 471904    0    0    13    46   56   90  7 21 61 10  0 
 
              procs
                r running
                b blocking
              memory
                swpd swap占用大小
                free 空间内存
                buff 内存分配为buff占据大小
                cache
              swap
                si swap input 从内存至磁盘中的swap速率
                so 
              io
                bi block input 从磁盘至内存
                bo
              system
                in/int  interrupt
                cs      context swtich
              cpu
                us user space
                sy system space
                id idle
                wa wait
                st stole
 
     grub
         grub-install --root-directory=DIR DEVICE
             DIR 为boot目录的上级目录
                 /boot --> /
                 /mnt/boot --> /mnt
 
             DEVICE 磁盘 , 要给哪个磁盘安装grub
 
         boot: linux resuce
         chroot /mnt/sysimage
         grub 
             root(hd0,0)
             setup (hd0)
 
             (hd#,#)
                 hd# #表示,第几个磁盘
                   #  表示,指定磁盘的第几个分区
 
     内核编译
         获取硬件信息:
             lscpu, lspci, lsusb, lsblk
             hal-device
 
         开发环境
 
         下载源码: kernel.org
 
         展开至内核源码树
             tar xf linux-VERSION.RELEASE.tar.xz -C /usr/local/src
             ln -sv linux-VERSION.RELEASE linux
 
         清理
             make clean | mrproper | distclean
 
         内核选项
             make config
             make menuconfig
             make xconfig QT,gnome
             make gconfig GTK,KDE
 
             make allnoconfig
             make defconfig
 
         编译
             make [-j #]
             make dir/
             make dir/file.[oiSs]
             make dir/file.ko
 
             make all [*]
             make vmlinux 
             make modules [M]
 
             make modules_install
             make install
 
     screen命令
         screen [-S NAME]
         exit
         Ctrl + a + d
         screen -ls
         screen -r NUM
 
     光盘启动流程
         POST -- MBR(boot.cat) -- isolinux.bin -- kernel(initrd.img) -- anaconda
 
     anaconda程序
         运行:配置,安装,配置
         配置文件: 命令段,程序包段,脚本段
 
     kickstart文件生成
         1、system-config-kickstart 和 xmanager
         2、vim编辑
 
     光盘生成命令:
          mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 6.6 i386 boot" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /root/boot.iso /tmp/myiso
 
          -b 2阶段
          -c 1阶段
          -o 输出文件
 
     SELinux
         配置文件: /etc/selinux/config <--- /etc/sysconfig/selinux
 
         MAC: 强制访问控制
             用户对文件的权限--> 进程对文件的权限 --> 文件type是否属于进程的domain的子集
                 是: 可访问
                 否:
                     1)
                         chcon [-R] -t TYPE FILE
                         restorecon [-R] FILE
                     2) 访问记录于/var/log/audit.log
                     3) setenforing 0
 
         SELinuxTYPE: target: 部分
 
         从permissive/enforing <--> disable:
             1)改变配置文件
             2)重启
         从enforing <--> permissive
             setenforing {0|1}
                 0: permissive
                 1: enforing
 
         查看状态: getenforing
 
         设定程序功能开启或关闭
             获取: getsebool [-a | 程序功能名]
             设置: setsebool [-P] SEBOOL=VALUE
                 -P 设置至规则库中,(找到规则,设定,转换为binary格式)
 
     while语句:
         while CONDITION; do
             循环体
         done
 
     sed工具使用:
         全文都会一行一行的加载至pattern space中,
             每加载进一行, 首先匹配: 地址定界是否符合,符合:执行command,显示执行后的结果至标准输出.不符合,显示至标准输出.
 
             n 加载一行后,显示后,读取下一行,覆盖本行,行的序号递增
 
         sed [OPTIONS...] '地址定界command;[地址定界command;...]' FILE1 FILE2 ...
             OPTIONS:
                 -i 将模式空间中的内容,写入文件中
                 -n 不显示默认输出的内容
                 -r extension reguler expresison
                 -f /PATH/TO/SOMEFILE
 
             地址定界:
                 #[,#]
                 /pat/[,/pat/]
                 #~#
                 =
                 ! 取反,在地址定界后
 
             command
                 d, p, w /PATH/TO/FILE, r /PATH/TO/FILE, a \TEXT, c \TEXT, i \TEXT, 
 
                 s 分隔符 模式 分隔符 修饰符
                 s//
                 s||
                 s,,
                 s@@
                 s##
 
                 模式
                 修饰符:
                     i/g/w/p
 
                     ignore 
                     global
                     w /path/to/somefile
                     p 仅显示替换的结果
 
             n,N
             g,G get 模式 <-- hold
             h,H hold 模式 --> hold
             d,D 删除行
 
     until, for, while, break, continue, case
         while CONDITION; do
             循环体 条件正确进入
         done
 
         until ! CONDITION; do
             循环体  条件不确进入
         done
 
         for ((控制变量初始化;条件判断表达式;控制变量修正表达式)); do
             循环体
         done
 
         while read line; do
             循环体
         done < /PATH/TO/SOMEFILE
 
         while true; do
             if CONDITION; then
                 condition
             else
                 break
             fi
         done
 
         until false;  do
             if CONDITION; then
                 break
             else
                 continue
             fi
         done
 
         case 变量 in
         glob|纯字符)
             statement
             ;;
         ...
         *)
             statement
             ;;
         esac
 
     函数
         函数: 代码片断
         函数名: 代码片断的简短名称
         调用函数名:进入函数的上下文
         函数的生命周期: 调用起始,调用后结束
         函数返回状态码: 函数体中最后一个命令执行结束后或return # 返回的#的值
         局部变量与本地变量相同时,
             局部变量只存活在函数体中
 
         函数/变量/文件名
             1) <255
             2) 见名知义: small_dog, smallDog
             3) 区分大小写
             4) 不能有关键字: if, else, then, while 等
 
         函数语法;
             funciton f_name {
                 函数体
             }
 
             f_name() {
                 函数体
             }
 
     systemd<CentOS 7的init程序>
         完成用户空间的一切事务,但系统调用仍由kernel执行
 
         init新特征:
             并行启动进程
             按需激活进程: 启动速度快
             快照
             依赖控制服务启动逻辑
         
         /etc
         /usr/lib
         /run
                 /systemd/systemd
 
         .service 管理服务
         .target 模拟实现运行级别
         .device 定义内核识别的设备
         .mount  定义文件系统的挂载点
         .socket 进程间通信的文件
         .snapshot 管理系统快照
         .swap     标识swap设备
         .automount 文件系统自动挂载点
         .path       定义文件系统中的一个文件或目录
 
         没有脚本灵活
         非由systemd启动的进程,systemd无法控制
         systemd级别不是完全兼容: 2, 3, 4, multi-user.target 都是单用户模式
         systemctl不会读取标准输入数据流
         跟用户环境无关(PATH)
         unit均受5min超时时长
 
         systemctl {start|stop|restart|status|relaod|reload-or-restart|try-restart} name.service
         服务状态: 
             systemctl list-units --type TYPE [--all]
                 TYPE: 
                     service 服务的状态
                     target  运行级别
             是否运行:
                 systemctl is-active name.service
             依赖:
                 systemctl list-dependencies name.service
             
         开机是否自启:
             systemctl list-unit-files --type service
             is-enabled name.service
 
         设定服务开机是否自启
             systemctl enable|diable|reenable name.service
             systemctl mask|umask name.service
 
         调整运行级别:
             systemctl isolate name.target
 
         设定默认运行级别:
             systemctl get-default
             systemctl set-default name.target
 
         systemctl rescue|halt|power off|reboot|suspend|hibenate|hybrid-sleep
             suspend 挂起
             hibenate 保存快照
             hybrid-sleep  快照并挂起
 
     bash编程:
         过程式编程: c 完成特定功能 
             选择/循环/顺序
         对象编程: 类,多次调用, c++, java
 
         数组:
             ${array[index]}
             index: [0,....]
                 数值 declare -a 
                 字符 declare -A (bash version 4.0)
 
         赋值:
             array[index]=
             array=("val1" "val2" "val3" ...)
             array=([0]="val1" [1]="val2" [10]="val3" ...)
             read -a array
             array[${#array[@]}]=
 
         销毁:
             unset array[index]
 
         字符串:
             知道变量的存储值时可以使用:非通用格式
                 ${var:3} 过3取所有
                 ${var:3:3} 过3取3个
 
                 ${var: -3} 取后3个
 
             ${var#*/ }    左向右,至第一个匹配到/全删除 
            ${ var ##*/}   左向右,至所有匹配到/全删除 
 
                var =/ var /log/message
                    基名: echo ${ var ##*/}
 
            ${ var %/*}    右向左,至第一个匹配到/全删除 
            ${ var %%/*}   右向左,至所有匹配到/全删除 
 
                var =/ var /log/message
                    目录名: echo ${ var %/*}
 
            替换:
                ${ var /pattern}        左向右,匹配到pattern的字符串,第一个删除
                ${ var /pattern/substi}   左向右,匹配到pattern的字符串,第一个替换
                ${ var //pattern}         左向右,匹配到pattern的字符串,所有删除
                ${ var //pattern/substi}  左向右,匹配到pattern的字符串,所有替换
 
                ${ var /#pattern}         左向右,匹配到pattern的字符串,首行删除
                { var /#pattern/substi}   
                ${ var /%pattern}
                { var /%pattern/substi}
 
            默认值:
                不存在时,返回string
                    ${ var :-STRING}
                    ${ var :=STRING}
 
                存在时,返回STRING
                    ${ var :+STRING}
 
                不存在,报错:
                    ${ var :?STRING}
 
            配置文件:
                # vim file1 
                HOSTNAME=lcc.org
                # vim file.sh
                    #!/bin/bash
                    #
                    [ -f file1 ] && source file1
                    HOSTNAME=${HOSTNAME:-lcc.org}
                    if  [ -z ${HOSTNAME:-} ]; then
                        HOSTNMAE=lcc.org
                    fi
 
                    hostname $HOSTNMAE
 
        install命令创建目录或复制文件
            install -d -m MODE -o OWNER -g GROUP FILE
 
        mktemp:创建临时文件或目录
            mktemp [-d] [-p DIR]  [--tmpdir DIR]  [-u] FILE.XXX
                XXX 至少 3
 
        awk命令  
            ~ /pat/
            !~
            ""  ==  ""
 
            print item1,item2
            printf  "FORMAT" ,item1,item2
                %i,%d decimal,interger
                %s 字符串
                %e 科学计数法
                %f floating
                %G %e + %f
 
                #[.#] 宽度 .# 精度
                + 符号
                - 左对齐: 默认右对齐
 
            模式支持扩展正则
            $表示字段
            "" 中不用使用变量,引用字符
            表示行数;NR >= # && NR <= #
            取反在PATTERN前
 
            awk [OPTION...]  'PATTERN{ACTION STATEMENT;ACTION STATEMENT;...}'  FILE1 FILE2 ...
                -F  ''  相当于 -v FS= ''
                -v OFS= ''
 
                字段分隔符: FS, OFS
                行分隔符: RS, ORS
                行:NR, FNR
                ARGC 命令行除了program个数
                ARGV 将命令行参数保存于ARGV的数组中
 
            if  (condition) {statement} 或  if  (condition) statement
            if  (condition) {statement}  else  {statement}
 
            for  (condition) {statement}
            while  (condition) {statement} 或  do  {statement}  while  (condition) 
 
            next
            # awk -F  ':'  '{if ($NF != "/bin/bash"){next} else {print $0}}'  /etc/passwd
 
            遍历数组:
                for  (i  in  array) {print i,array[i]}
 
            替换:
                sub(r,s,t)
                gsub(r,s,t) ( "o" . "O" ,$ 1 )
 
                split($ 5 ,ARRAY, "%" )
               









本文转自 lccnx 51CTO博客,原文链接:http://blog.51cto.com/sonlich/1965815,如需转载请自行联系原作者
目录
相关文章
|
2天前
|
Ubuntu Linux
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
查看Linux系统架构的命令,查看linux系统是哪种架构:AMD、ARM、x86、x86_64、pcc 或 查看Ubuntu的版本号
23 3
|
2天前
|
Linux Shell
Linux系统
是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。
|
5天前
|
缓存 监控 网络协议
掌控全局:Linux 系统性能调优技巧全面指南
掌控全局:Linux 系统性能调优技巧全面指南
|
8天前
|
Linux
在Linux中,怎么把脚本添加到系统服务里,即用 service 来调用?
在Linux中,怎么把脚本添加到系统服务里,即用 service 来调用?
|
3天前
|
Ubuntu Linux 编译器
在ubantu/linux系统出现parse error(语法错误)
本文讨论了在Ubuntu/Linux系统中遇到"parse error"(语法错误)的问题,并提供了将非声明语句移动到所有声明语句下方以解决该问题的解决方案。
在ubantu/linux系统出现parse error(语法错误)
|
7天前
|
缓存 NoSQL Linux
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
【Azure Redis 缓存】Windows和Linux系统本地安装Redis, 加载dump.rdb中数据以及通过AOF日志文件追加数据
WK
|
3天前
|
监控 Ubuntu Linux
Linux系统平均负载如何查看?
在Linux系统中,有多种命令可用于查看平均负载,包括实时和历史数据。常用方法有:`uptime`命令显示系统运行时间和平均负载;`top`命令实时监控系统进程和资源使用;`w`命令展示用户信息及负载;通过`cat /proc/loadavg`查看特定文件中的负载信息;`sar`命令提供详尽的系统资源监控;而`htop`则以交互方式展示系统负载和资源使用情况。这些工具帮助用户全面了解系统性能状态。
WK
10 2
|
4天前
|
Linux Shell
Linux系统
是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。
|
5天前
|
Linux Shell
Linux系统
是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。
|
6天前
|
Linux Shell
Linux系统
是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。
下一篇
云函数