├── .idea
├── encodings.xml
├── markdown-navigator.xml
├── markdown-navigator
│ └── profiles_settings.xml
├── modules.xml
├── preferred-vcs.xml
├── shell-work.iml
├── vcs.xml
└── workspace.xml
├── IO.sh
├── README.md
├── awk.sh
├── cookieloganalysis.sh
├── cpu.sh
├── dish.sh
├── docker.md
├── exec_sql.sh
├── find.md
├── javadump.sh
├── master_slave_replication.sh
├── maven.sh
├── mysql_dump.sh
├── mysqlmonitor.sh
├── net.sh
├── performancetool.sh
└── process.sh
/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.idea/markdown-navigator.xml:
--------------------------------------------------------------------------------
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 |
--------------------------------------------------------------------------------
/.idea/markdown-navigator/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/.idea/preferred-vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ApexVCS
5 |
6 |
--------------------------------------------------------------------------------
/.idea/shell-work.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/.idea/workspace.xml:
--------------------------------------------------------------------------------
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 | tree
141 |
142 |
143 |
144 |
145 |
146 |
147 |
150 |
151 |
152 |
174 |
175 |
176 |
177 |
178 | true
179 | DEFINITION_ORDER
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 | project
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 | 1498702541249
646 |
647 |
648 | 1498702541249
649 |
650 |
651 |
652 |
653 |
654 |
655 |
656 |
657 | 1498710562748
658 |
659 |
660 |
661 | 1498710562748
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 |
1146 |
1147 |
1148 |
1149 |
1150 |
--------------------------------------------------------------------------------
/IO.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | IO.sh
3 |
4 | ##iostat是查看磁盘活动统计情况
5 |
6 | ##显示所有设备负载情况 r/s: 每秒完成的读 I/O 设备次数。即 rio/s;w/s: 每秒完成的写 I/O 设备次数。即 wio/s等
7 | iostat
8 |
9 | ##每隔2秒刷新磁盘IO信息,并且每次显示3次
10 | iostat 2 3
11 |
12 | #显示某个磁盘的IO信息
13 | iostat -d sda1
14 |
15 | ##显示tty和cpu信息
16 | iostat -t
17 |
18 | ##以M为单位显示磁盘IO信息
19 | iostat -m
20 |
21 | ##查看TPS和吞吐量信息 kB_read/s:每秒从设备(drive expressed)读取的数据量;kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;kB_read:读取的总数据量;kB_wrtn:写入的总数量数据量;
22 | iostat -d -k 1 1
23 |
24 | #查看设备使用率(%util)、响应时间(await)
25 | iostat -d -x -k 1 1
26 |
27 | #查看CPU状态
28 | iostat -c 1 3
29 |
30 | #统计进程(pid)的stat,进程的stat自然包括进程的IO状况
31 | pidstat
32 |
33 | #只显示IO
34 | pidstat -d 1
35 |
36 | #-d IO 信息,-r 缺页及内存信息-u CPU使用率-t 以线程为统计单位1 1秒统计一次
37 | pidstat -u -r -d -t 1
38 |
39 | #文件级IO分析,查看当前文件由哪些进程打开
40 | lsof
41 | ls /proc/pid/fd
42 |
43 | #利用 sar 报告磁盘 I/O 信息DEV 正在监视的块设备 tps 每秒钟物理设备的 I/O 传输总量 rd_sec/s 每秒从设备读取的扇区数量 wr_sec/s 每秒向设备写入的扇区数量 avgrq-sz I/O 请求的平均扇区数
44 | #avgqu-sz I/O 请求的平均队列长度 await I/O 请求的平均等待时间,单位为毫秒 svctm I/O 请求的平均服务时间,单位为毫秒 %util I/O 请求所占用的时间的百分比,即设备利用率
45 | sar -pd 10 3
46 |
47 | #iotop top的io版
48 | iotop
49 |
50 | #查看页面缓存信息 其中的Cached 指用于pagecache的内存大小(diskcache-SwapCache)。随着写入缓存页,Dirty 的值会增加 一旦开始把缓存页写入硬盘,Writeback的值会增加直到写入结束。
51 | cat /proc/meminfo
52 |
53 | #查看有多少个pdflush进程 Linux 用pdflush进程把数据从缓存页写入硬盘
54 | #pdflush的行为受/proc/sys/vm中的参数的控制/proc/sys/vm/dirty_writeback_centisecs (default 500): 1/100秒, 多长时间唤醒pdflush将缓存页数据写入硬盘。默认5秒唤醒2个(更多个)线程。如果wrteback的时间长于dirty_writeback_centisecs的时间,可能会出问题
55 | cat /proc/sys/vm/nr_pdflush_threads
56 |
57 | #查看I/O 调度器
58 | #调度算法
59 | #noop anticipatory deadline [cfq]
60 | #deadline : deadline 算法保证对既定的IO请求以最小的延迟时间。
61 | #anticipatory: 有个IO发生后,如果又有进程请求IO,则产生一个默认6ms猜测时间,猜测下一个进程请求IO是干什么。这对于随机读取会造成较大的延时。对数据库应用很糟糕,而对于Web Server等则会表现不错。
62 | #cfq: 对每个进程维护一个IO队列,各个进程发来的IO请求会被cfq以轮循方式处理,对每一个IO请求都是公平。适合离散读的应用。
63 | #noop: 对所有IO请求都用FIFO队列形式处理。默认IO不会存在性能问题。
64 | cat /sys/block/[disk]/queue/scheduler
65 |
66 |
67 | #改变IO调度器
68 | $ echo deadline > /sys/block/sdX/queue/scheduler
69 | #提高调度器请求队列的
70 | $ echo 4096 > /sys/block/sdX/queue/nr_requests
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | #shell_repository
2 | ============================================================
3 | ##shell常用分析命令和运行脚本 工作中不断更新
4 |
5 | ## find awk grep “三剑客” 用法大全
6 | ## mysql监控 运维
7 |
8 | ## cookielog分析脚本
9 |
10 | ## 线上java进程信息dump和机器信息dump脚本
11 |
12 | ## cpu监控相关
13 |
14 | ## dish 磁盘管理
15 |
16 |
--------------------------------------------------------------------------------
/awk.sh:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/skyformat99/shell_repository/64d0ce8d3271cb527c206cc1e0f5ca8dd9e99250/awk.sh
--------------------------------------------------------------------------------
/cookieloganalysis.sh:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/skyformat99/shell_repository/64d0ce8d3271cb527c206cc1e0f5ca8dd9e99250/cookieloganalysis.sh
--------------------------------------------------------------------------------
/cpu.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | #限制某个线程的cpu使用率
3 | sudo cpulimit -p pid -l 50
4 | ps -eo %cpu,args | grep -m1 PROCESS | awk '{print $1}'
5 |
6 | #将当前进程按照memory和cpu排序
7 | ps aux --sort=%mem,%cpu
8 |
9 | #按照cpu使用率排序
10 | ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | sed "/^ 0.0 /d"
11 |
12 | #查看当前系统的物理cpu个数
13 | grep "processor" /proc/cpuinfo | wc -l
14 | grep -c -e '^cpu[0-9]\+' /proc/stat
15 |
16 | #查看当前cpu型号
17 | grep "model name" /proc/cpuinfo
18 |
19 | #查看当前cpu信息
20 | cat /proc/cpuinfo
21 |
22 | #查看当前系统的位数
23 | grep -q '\' /proc/cpuinfo && echo 64 bits || echo 32 bits
24 | getconf LONG_BIT | grep '64'
25 | java -version
26 |
27 | #查看当前系统的cpu频率
28 | awk -F": " '/cpu MHz\ */ { print "Processor (or core) running speed is: " $2 }' /proc/cpuinfo ; dmidecode | awk -F": " '/Current Speed/ { print "Processor real speed is: " $2 }'
29 |
30 |
31 | #查看每个cpu每个进程的cpu使用率
32 | ps ax -L -o pid,tid,psr,pcpu,args | sort -nr -k4| head -15 | cut -c 1-90
33 |
34 | #查看当前中断
35 | cat /proc/interrupts
36 |
37 | #查看多个处理器的使用率相关信息
38 | mpstat –P ALL 1
39 |
40 | #每个物理CPU中Core的个数:
41 | cat /proc/cpuinfo | grep "cpu cores" | uniq | awk -F: '{print $2}'
42 |
43 | #是否为超线程?
44 | #如果有两个逻辑CPU具有相同的”core id”,那么超线程是打开的。
45 | #每个物理CPU中逻辑CPU(可能是core, threads或both)的个数:
46 | cat /proc/cpuinfo | grep "siblings"
47 |
48 | #/proc/stat 文件中有一行记录的机器从启动依赖,各个中断序号发生中断的次数。
49 | #这一行以intr开头,接下来的第一个数字是总的中断数目,之后就是分别的中断数目,从0开始。
50 | cat /proc/stat | grep intr
51 |
--------------------------------------------------------------------------------
/dish.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | #按照目录大小排序战士最前面15个目录或者文件
3 | du -xB M --max-depth=2 /var | sort -rn | head -n 15
4 |
5 | #列出当前所有子目录的文件大小
6 | du -h --max-depth=1
7 |
8 | #列出当前文件或者目录最大的10个
9 | du -s * | sort -n | tail
10 |
11 | #按照目录大小从大到小排序
12 | du -b --max-depth 1 | sort -nr | perl -pe 's{([0-9]+)}{sprintf "%.1f%s", $1>=2**30? ($1/2**30, "G"): $1>=2**20? ($1/2**20, "M"): $1>=2**10? ($1/2**10, "K"): ($1, "")}e'
13 |
14 | #列出path这个目录的文件树
15 | du -h /path | sort -h
16 |
17 | #每隔60s监控对应目录的文件大小变化
18 | watch -n60 du /var/log/messages
19 |
20 |
21 | #递归删除当前目录下所有子目录中的.svn目录
22 | find.md . -type d -name '.svn' -print0 | xargs -0 rm -rdf
23 |
24 | #列出当前磁盘的使用情况
25 | df -P | column -t
26 |
27 | #监控磁盘的使用情况
28 | watch -d -n 5 df
29 |
30 | #列出当前inode的使用情况
31 | df -i
32 |
33 | #按照每个磁盘使用量从高到低排序
34 | df -h | grep -v ^none | ( read header ; echo "$header" ; sort -rn -k 5)
35 |
36 |
37 | #查看物理磁盘的使用情况
38 | df -x tmpfs | grep -vE "(gvfs|procbususb|rootfs)"
39 |
40 | #查看当前所有磁盘的大小和使用量
41 | df -H
42 |
43 | #查看所有分区使用情况
44 | fdisk -l /dev/sda
45 |
46 | # 显示系统所有的分区或给定的分区
47 | fdisk -l
48 | # 显示时,显示的是扇区数不是柱面数
49 | fdisk -u
50 | # 显示指定partition的block数
51 | fdisk -s partition
52 |
53 | #查看磁盘的读写容量
54 | iostat -m -d /dev/sda1
55 |
56 | #测试磁盘的读写速度
57 | hdparm -t /dev/sda
58 |
59 | #查看某个文件的所有链接
60 | find.md -L / -samefile /path/to/file -exec ls -ld {} +
61 |
62 | #查看最大的5个文件
63 | find.md . -type f -exec ls -s {} \; | sort -n -r | head -5
64 |
65 | #查看365天前的文件并删除
66 | find.md ./ -type f -mtime +365 -exec rm -f {} \;
67 |
68 | #查看大于100M的文件
69 | find.md . -type f -size +100M
70 |
--------------------------------------------------------------------------------
/docker.md:
--------------------------------------------------------------------------------
1 | ##**查看docker版本信息**
2 |
3 | ```
4 | #docker version
5 | #docker -v
6 | #docker info
7 | ```
8 | ##**image镜像操作命令**
9 |
10 | ```
11 | #docker search image_name //检索image
12 | #docker pull image_name //下载镜像
13 | #docker images //列出本地镜像 -a, --all=false Show all images; --no-trunc=false Don't truncate output; -q, --quiet=false Only show numeric IDs
14 | //删除一个或者多个镜像; -f, --force=false Force; --no-prune=false Do not delete untagged parents
15 | #docker rmi image_name
16 | //显示一个镜像的历史; --no-trunc=false Don't truncate output; -q, --quiet=false Only show numeric IDs
17 | #docker history image_name
18 | ```
19 | ##**容器操作**
20 |
21 | ```
22 | # 在容器中运行"echo"命令,输出"hello word"
23 | $docker run image_name echo "hello word"
24 |
25 | # 交互式进入容器中
26 | $docker run -i -t image_name /bin/bash
27 |
28 | # 后台启动镜像 并更改镜像名字
29 | $docker run -d --name myImage centos
30 |
31 | # 在容器中安装新的程序
32 | $docker run image_name yum install -y app_name
33 |
34 | # 列出当前所有正在运行的container
35 | $docker ps
36 | # 列出所有的container
37 | $docker ps -a
38 | # 列出最近一次启动的container
39 | $docker ps -l
40 |
41 | # 保存对容器的修改; -a, --author="" Author; -m, --message="" Commit message
42 | $docker commit ID new_image_name
43 |
44 |
45 | # 删除所有容器
46 | $docker rm `docker ps -a -q`
47 |
48 | # 删除单个容器; -f, --force=false; -l, --link=false Remove the specified link and not the underlying container; -v, --volumes=false Remove the volumes associated to the container
49 | $docker rm Name/ID
50 |
51 | # 停止、启动、杀死一个容器
52 | $docker stop Name/ID
53 | $docker start Name/ID
54 | $docker kill Name/ID
55 |
56 | # 从一个容器中取日志; -f, --follow=false Follow log output; -t, --timestamps=false Show timestamps
57 | $docker logs Name/ID
58 |
59 | # 列出一个容器里面被改变的文件或者目录,list列表会显示出三种事件,A 增加的,D 删除的,C 被改变的
60 | $docker diff Name/ID
61 |
62 | # 显示一个运行的容器里面的进程信息
63 | $docker top Name/ID
64 |
65 | # 从容器里面拷贝文件/目录到本地一个路径
66 | $docker cp Name:/container_path to_path
67 | $docker cp ID:/container_path to_path
68 |
69 | # 重启一个正在运行的容器; -t, --time=10 Number of seconds to try to stop for before killing the container, Default=10
70 | $docker restart Name/ID
71 |
72 | # 附加到一个运行的容器上面; --no-stdin=false Do not attach stdin; --sig-proxy=true Proxify all received signal to the process
73 | $docker attach ID
74 |
75 | #访问另一个容器的命名空间 进入另一个容器
76 | #安装Linux工具包
77 | $ yum install -y util-linux
78 | #获取容器的Pid
79 | $docker inspect --format "{{.State.Pid}}" containerName
80 | #进入容器
81 | $ nsenter --target Pid --mount --uts --ipc --net --pid
82 |
83 | #容器网络配置
84 | #随机生成container到host端口映射
85 | $docker run -d -P --name myNginx nginx
86 | #指定特定端口 将container 80到host91端口的映射
87 | $docker run -d -p 91:80 --name myNginx imageName
88 | # -p ip: hostPort:containerPosrt
89 | $docker ps -l
90 | ```
91 |
92 | ##**docker数据管理**
93 |
94 | ```
95 | # -v 绑定挂载一个数据卷 -h 给容器指定一个主机名
96 | $docker run -it --name volume-test1 -h nginx -v /data/ imageName
97 |
98 | #或着手动设置映射
99 | $docker run -it --name volume-test1 -h nginx -v /opt:/opt imageName
100 |
101 | #挂载另一容器, 另一容器volume-test2(即使容器已经停掉)来做volume-test1的专门的存储
102 | $docker run -it --name volume-test1 -h nginx --volumes-from volume-test2 imageName
103 |
104 | #显示数据卷到host主机的映射关系
105 | $docker inspect -f {{.Volumes}} volume-test1
106 | ```
107 |
--------------------------------------------------------------------------------
/exec_sql.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | HOSTNAME="192.168.0.2"
4 | PORT="3306"
5 | USERNAME="root"
6 | PASSWORD="root"
7 | DBNAME="testDB"
8 | toLogin="mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD}"
9 |
10 | while read line;
11 | do
12 | user_id=`echo $line | awk -F "\n" '{ printf("%s", $1)}'`
13 | # 插入 tbl_operate_user 用户表
14 |
15 | ${toLogin} -e "INSERT INTO ${DBNAME}.\`tbl_operate_user\`
16 | (user_id, user_name, user_erp_no, user_type,ope_dep_id,ope_phone_num,email,user_stat, create_time, update_time)
17 | VALUES('$user_id', '$user_id' , '$user_id', '', '00002', '', '', '1', NOW(), NOW())"
18 | echo "INSERT INTO ${DBNAME}.\`tbl_operate_user\`
19 | (user_id, user_name, user_erp_no, user_type,ope_dep_id,ope_phone_num,email,user_stat, create_time, update_time)
20 | VALUES('$user_id', '$user_id' , '$user_id', '', '00003', '', '', '1', NOW(), NOW());" >> insert.sql
21 |
22 |
23 | # 插入角色
24 | ${toLogin} -e "INSERT INTO ${DBNAME}.\`tbl_ouser_role_rel\` (user_id, role_id, create_time, update_time) VALUES('$user_id', '05', NOW(), NOW())"
25 | echo "INSERT INTO ${DBNAME}.\`tbl_ouser_role_rel\` (user_id, role_id, create_time, update_time) VALUES('$user_id', '05', NOW(), NOW());" >> insert.sql
26 |
27 | # 用户业务线表
28 | ${toLogin} -e "INSERT INTO ${DBNAME}.\`tbl_operate_user_busitype\`
29 | (user_id, busi_type_id, create_time, update_time)
30 | VALUES('$user_id', 'all', NOW(),NOW())"
31 | echo "INSERT INTO ${DBNAME}.\`tbl_operate_user_busitype\`
32 | (user_id, busi_type_id, create_time, update_time)
33 | VALUES('$user_id', 'all', NOW(),NOW());" >> insert.sql
34 | #
35 | done < input.data
36 |
37 |
38 |
--------------------------------------------------------------------------------
/find.md:
--------------------------------------------------------------------------------
1 | 1. 按文件名搜索。
2 | 搜索当前目录下所有的以txt结尾的文件。第二个命令用了 -exec 参数,可以在对查找的所有文件执行一种操作。注意格式,空格和;一个都不能少。-name 的参数可以用正则表达式,例如第二个例子
3 |
4 | find ./* -name "*.txt"
5 | find ./* -name "[ab]*.py"
6 | find ./* -name "*.pyc" -exec rm {} \;
7 |
8 | 2. 按修改时间查找
9 | 查找当前目录下当天修改过的文件。-1 表示一天前修改过的文件。-2表示前两天。find ./* -mtime n n表示,对文件数据的最近一次修改是在 n*24 小时之前。+n 指n天以前,-n指n天以内(对 -mmin 是指n分钟), n 表示第n天,他们的含义都是不同的,注意区分。
10 |
11 | find ./* -mtime 60 -type f -print
12 | find ./* -mmin -60 -type f -print
13 | find ./* -mmin +60 -type f -print
14 |
15 | 3. 文件状态改变
16 | 和 上个参数相比,基本道理都是一样的,只不过这个参数的含义是文件的权限被修改。改内容和改文件的权限是不一样的,这里指的是更改的是文件inode的数据,比如文件的权限,所属人等等信息。cmin 表示近60分钟内被改过权限,ctime 表示近几天内被修改过。
17 |
18 | find ./* -cmin +60 -type f -print
19 | find ./* -ctime -60 -type f -print
20 |
21 | 4
22 | 按照文件的所属group和 所属user 来查找-user 和 -nouser 最后一个命令找出当前已经被删除的系统用户的所有文件, - group 和 - nogroup 的功能类似。
23 |
24 | find ./* -user fox
25 | find ./* -nouser
26 |
27 | 5
28 | find 避开某个目录,避开多个目录。其中 -a 表示 and 的意思,-o 表示or 的意思。
29 |
30 | find test -path "test/test4" -prune -o -print
31 | find test \( -path test/test4 -o -path test/test3 \) -prune -o -print
32 | find . \( -path ./modules -o -path ./framework -o -path ./utils -o -path ./config \) -prune -o -name "Bigger.*" -print
33 |
34 | 6
35 | -perm 选项 指文件的访问权限
36 |
37 | find -perm 755 -print
38 |
39 | 7
40 | 实用inode 来查找文件编号。可以如下面所示在find命令中指定inode编号。在此,find命令用inode编号重命名了一个文件。你也可以通过rm来删除那个特殊的文件。
41 |
42 | ls -i1 test*
43 | 16187429 test-file-name
44 | 16187430 test-file-name
45 | find -inum 16187430 -exec mv {} new-test-file-name \;
46 |
47 | 8
48 | 找出当前目录下最大的5个文件
49 |
50 | find . -type f -exec ls -s {} \; | sort -n -r | head -5
51 |
52 | 9
53 | 下面的命令删除大于100M的*.zip文件。
54 |
55 | find / -type f -name *.zip -size +100M -exec rm -i {} \;
--------------------------------------------------------------------------------
/javadump.sh:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/skyformat99/shell_repository/64d0ce8d3271cb527c206cc1e0f5ca8dd9e99250/javadump.sh
--------------------------------------------------------------------------------
/master_slave_replication.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | # blog uri: http://linuxnote.blog.51cto.com/9876511/1652016
3 | #!/bin/bash
4 | #Target: Auto Make And Check Mysql Master-Slave
5 | #Date: 2015-05-17
6 | #Author: Jacken
7 | #QQ 654001593
8 | #QQ Group 170544180
9 | #Version: 1.0
10 | #
11 | #Note:Have To Exec 1 On Master,Then Exec 2 On SLAVE_DIR,On Correspond Machine To Select "Show Status"
12 | #Only Allow Define Variable
13 | shopt -s -o nounset
14 | #
15 | #####################################################################
16 | #####################################################################
17 | ##########Define Varabile
18 | #Define Master And Slave Database Ipaddress.
19 | MASTER_IP=192.168.1.3
20 | SLAVE_IP=192.168.1.4
21 | #
22 | #Define Master Super User Name And Password.
23 | MASTER_USER=root
24 | MASTER_PASSWD=master123
25 | #
26 | #Define Slave Super User Name And Password.
27 | SLAVE_USER=root
28 | SLAVE_PASSWD=slave123
29 | #
30 | #Define Master-to-Slave Grant User & Password & Host
31 | GRANT_USER=grantuser
32 | GRANT_PASSWD=grantpasswd
33 | GRANT_HOST=%
34 | #
35 | #Sync Database
36 | RSDB=*.*
37 | #
38 | #Define Mysql install Directory
39 | MASTER_DIR=/usr/local/mysql
40 | SLAVE_DIR=/usr/local/mysql
41 | #
42 | #Define Device Name.
43 | DEV=eth0
44 | #
45 | #Get Ipaddress For Exec Scripts Machine
46 | GETIP=$(ifconfig $DEV| sed -n '/inet addr:/p'|awk '{print $2}'| awk -F: '{print $2}')
47 | #####################################################################
48 | #####################################################################
49 | #
50 | #Only For Super User To Exec
51 | if [ $UID -ne 0 ];then
52 | echo -e '\e[31mSorry,This Script Must Be Super User To Exec!\e[0m'
53 | exit 2
54 | fi
55 | #
56 | #
57 | #####################################################################
58 | #####################################################################
59 | #
60 | #Define Master database Operations.
61 | MYSQL_MIN="$MASTER_DIR/bin/mysql -u$MASTER_USER -p$MASTER_PASSWD -e"
62 | #
63 | function MASTER_DO {
64 | #Backup And Judge My.cnf
65 | if [ -f /etc/my.cnf ];then
66 | cp /etc/my.cnf /etc/my.cnf$$
67 | else
68 | cp $MASTER_DIR/share/mysql/my-medium.cnf /etc/my.cnf
69 | fi
70 | #Grant Slave Database Access Master Database.
71 | $MASTER_DIR/bin/mysql -u$MASTER_USER -p$MASTER_PASSWD -e "grant all on $RSDB to '$SLAVE_USER'@'$SLAVE_IP' identified by '$SLAVE_PASSWD';"
72 | #Grant Master-Slave Sync User.
73 | $MYSQL_MIN "grant replication slave on $RSDB to \"$GRANT_USER\"@\"$GRANT_HOST\" identified by \"$GRANT_PASSWD\";"
74 | $MYSQL_MIN "flush privileges;"
75 | }
76 | #
77 | #
78 | #####################################################################
79 | #####################################################################
80 | #
81 | #Define Slave database Operations.
82 | #
83 | function SLAVE_DO(){
84 | MYSQL_SIN="$SLAVE_DIR/bin/mysql -u$SLAVE_USER -p$SLAVE_PASSWD -e"
85 | #Get Master Database status.
86 | MASTER_INFO=`$SLAVE_DIR/bin/mysql -h$MASTER_IP -u$SLAVE_USER -p$SLAVE_PASSWD -e "show master status;"|sed -n '/mysql/p'`
87 | #
88 | #Get Log_File
89 | LOG_FILE=`echo $MASTER_INFO|awk '{print $1}'`
90 | #Get Log_Pos
91 | LOG_POS=`echo $MASTER_INFO|awk '{print $2}'`
92 | #
93 | #Get Slave Database Status
94 | SYNC_INFO=`$MYSQL_SIN "show slave status \G;"|grep Runnning > /dev/null 2>&1`
95 | #
96 | #Judge Yes Or No
97 | SLAVE_IO_STATUS=`echo $SYNC_INFO|sed -n '/IO/p'|awk -F: '{print $2}'`
98 | SLAVE_SQL_STATUS=`echo $SYNC_INFO|sed -n '/SQL/p'|awk -F: '{print $2}'`
99 | #Grant Master User To Access Slave Database.
100 | `$MYSQL_SIN "grant all privileges on $RSDB to \"$MASTER_USER\"@\"$MASTER_IP\" identified by \"$MASTER_PASSWD\";"`
101 | #
102 | #Backup And Judge /etc/My.cnf
103 | if [ -f /etc/my.cnf ];then
104 | cp /etc/my.cnf /etc/my.cnf$$
105 | else
106 | cp $MASTER_DIR/share/mysql/my-medium.cnf /etc/my.cnf
107 | fi
108 | #
109 | #Modify Slave Server-id
110 | sed -i '/^server-id/s/1/2/' /etc/my.cnf
111 | #
112 | #Add Master Information On Slave
113 | $MYSQL_SIN "change master to master_host='$MASTER_IP',master_user='$GRANT_USER',master_password='$GRANT_PASSWD',master_log_file='$LOG_FILE',master_log_pos=$LOG_POS;"
114 | $MYSQL_SIN "slave start;"
115 | }
116 | #
117 | #
118 | #####################################################################
119 | #####################################################################
120 | #
121 | #Judge Master-Slave Status On Slave To Exec!
122 | function SYNC_STATUS_S {
123 | MYSQL_SIN="$SLAVE_DIR/bin/mysql -u$SLAVE_USER -p$SLAVE_PASSWD -e"
124 | #Get Sync Information
125 | SYNC_INFO=`$MYSQL_SIN 'show slave status \G'|grep Running`
126 | #
127 | #Judge Yes Or No
128 | SLAVE_IO_STATUS=`echo $SYNC_INFO|awk '{print $2}'`
129 | SLAVE_SQL_STATUS=`echo $SYNC_INFO|awk '{print $4}'`
130 | #
131 | #Reply Master-Slave Status Information.
132 | if [[ "$SLAVE_IO_STATUS" == 'Yes' && "$SLAVE_SQL_STATUS" == 'Yes' ]];then
133 | echo -e '\e[32mThe Database Sync Is Successfuly!\e[0m'
134 | else
135 | echo -e '\e[31mThe Database Sync Is Failure!\e[0m'
136 | echo -e '\e[31mPlease Check!Exit....\e[0m'
137 | exit 2
138 | fi
139 | }
140 | #Judge Master-Slave Status On Master To Exec!
141 | function SYNC_STATUS_M {
142 | MYSQL_MIN="$MASTER_DIR/bin/mysql -h$SLAVE_IP -u$MASTER_USER -p$MASTER_PASSWD -e"
143 | #
144 | #Get Sync Information
145 | SYNC_INFO=`$MYSQL_MIN 'show slave status \G'|grep Running`
146 | #
147 | #Judge Yes Or No
148 | SLAVE_IO_STATUS=`echo $SYNC_INFO|awk '{print $2}'`
149 | SLAVE_SQL_STATUS=`echo $SYNC_INFO|awk '{print $4}'`
150 | #Reply Master-Slave Status Information.
151 | if [[ "$SLAVE_IO_STATUS" == 'Yes' && "$SLAVE_SQL_STATUS" == 'Yes' ]];then
152 | echo -e '\e[32mThe Database Sync Is Successfuly!\e[0m'
153 | else
154 | echo -e '\e[31mThe Database Sync Is Failure!\e[0m'
155 | echo -e '\e[31mPlease Check!Exit....\e[0m'
156 | exit 2
157 | fi
158 | }
159 | #
160 | #####################################################################
161 | #####################################################################
162 | #
163 | #Judge Master Database Machine!
164 | function JUDGE_MASTER_ID() {
165 | if [ ! "$GETIP" == "$MASTER_IP" ];then
166 | echo -e '\e[31mYour Choice Error,This Option Only Select On Master Machine!\e[0m'
167 | exit 2
168 | fi
169 | }
170 | #
171 | #####################################################################
172 | #####################################################################
173 | #
174 | #Judge Master Database Machine!
175 | function JUDGE_SLAVE_ID() {
176 | if [ ! "$GETIP" == "$SLAVE_IP" ];then
177 | echo -e '\e[31mYour Choice Error,This Option Only Select On Slave Machine!\e[0m'
178 | exit 2
179 | fi
180 | }
181 | #
182 | #####################################################################
183 | #####################################################################
184 | #####################################################################
185 | #
186 | PS3="Please Input Number:"
187 | select i in "Configure Master Database(On Master)" "Configure Slave Database(On Slave)" "Show Master-Slave Status(On Master)" "Show Master-Slave(On Slave)" "Exit"
188 | do
189 | CHOOSE=$REPLY
190 | case $CHOOSE in
191 | #####################################################################
192 | 1)
193 | JUDGE_MASTER_ID
194 | MASTER_DO
195 | if [ $? -eq 0 ];then
196 | echo -e '\e[32mConfigure Master Database Successfully!\e[0m'
197 | else
198 | echo -e '\e[31mConfigure Master Database Failure!\e[0m'
199 | fi
200 | ;;
201 | #####################################################################
202 | 2)
203 | JUDGE_SLAVE_ID
204 | SLAVE_DO
205 | if [ $? -eq 0 ];then
206 | echo -e '\e[32mConfigure Slave Database Successfully!\e[0m'
207 | else
208 | echo -e '\e[31mConfigure Slave Database Failure!\e[0m'
209 | fi
210 | ;;
211 | #####################################################################
212 | 3)
213 | JUDGE_MASTER_ID
214 | SYNC_STATUS_M
215 | ;;
216 | #####################################################################
217 | 4)
218 | JUDGE_SLAVE_ID
219 | SYNC_STATUS_S
220 | ;;
221 | #####################################################################
222 | 5)
223 | echo -e '\e[32mByeBye.\e[0m'
224 | exit
225 | ;;
226 | #####################################################################
227 | *)
228 | echo -e '\e[31mInput Error,Please Input Again!\e[0m'
229 | esac
230 | done
--------------------------------------------------------------------------------
/maven.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | maven常用命令
3 |
4 |
5 | ##查看maven版本
6 | mvn --version
7 |
8 | ##创建基于maven web archetype的 maven web工程
9 | ##创建maven的spring web工程 http://www.mkyong.com/maven/how-to-create-a-web-application-project-with-maven/
10 | mvn archetype:generate -DgroupId={project-packaging} -DartifactId={project-name} -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false
11 |
12 | ##创建maven的java普通工程
13 | mvn -B archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DgroupId=com.mycompany.app -DartifactId=my-app
14 |
15 | ##编译工程
16 | mvn compile
17 |
18 | ##执行单元测试
19 | mvn test
20 |
21 | ##打包
22 | mvn package
23 |
24 | ##安装到本地maven库
25 | mvn install
26 |
27 | ##将包部署到远程仓库
28 | mvn deploy
29 |
30 |
31 | ##将工程生成web站点,可以基于site的语法生成一个文档性的网站
32 | mvn site
33 |
34 |
35 | ##删除编译好的target目录
36 | mvn clean
37 |
38 |
39 | ##生成eclipse工程
40 | mvn eclipse:eclipse
41 |
42 | ##生成 IntelliJ IDEA工程
43 | mvn idea:idea
44 |
45 |
46 | ##如果maven工程中配置了jetty插件,则下面名称启动jetty内置服务器
47 | mvn jetty:run
48 |
49 |
50 | ##查看工程里面激活生效的profile,
51 | mvn help:active-profiles
52 |
53 | ##安装指定文件到本地仓库
54 | mvn install:install-file -DgroupId= -DartifactId= -Dversion=1.0.0 -Dpackaging=jar -Dfile=
55 |
56 | ##查看实际pom信息
57 | mvn help:effective-pom
58 |
59 | ##分析项目的依赖信息 打印整个依赖树
60 | mvn dependency:analyze 或 mvn dependency:tree
61 |
62 | ##在项目发布的时候 一般都需要进行依赖冲突检查或者重复类的检查,这个时候我一般会使用下面的两个命令:
63 | mvn -U clean package -Dmaven.test.skip=true enforcer:enforce -DcheckDeployRelease_skip=true -Denforcer.skip=false
64 | mvn -U dependency:tree -Dverbose
65 | ##查看帮助信息
66 | mvn help:help 或 mvn help:help -Ddetail=true
67 |
68 | ##查看插件的帮助信息
69 | mvn :help,比如:mvn dependency:help 或 mvn ant:help
70 |
71 | ##打包时跳过测试
72 | mvn package -Dmaven.test.skip=ture
73 |
74 | ##使用 help 插件的 describe 目标来输出 Maven Help 插件的信息。
75 | mvn help:describe -Dplugin=help
76 |
77 | ##使用Help 插件输出完整的带有参数的目标列
78 | mvn help:describe -Dplugin=help -Dfull
79 |
80 | ##Exec 插件让我们能够在不往 classpath 载入适当的依赖的情况下,运行这个程序
81 | mvn exec:java -Dexec.mainClass=org.sonatype.mavenbook.weather.Main
82 |
83 | ##Exec 插件让我们能够在不往 classpath 载入适当的依赖的情况下,运行这个程序
84 | mvn dependency:resolve
85 |
86 | ##想要查看完整的依赖踪迹,包含那些因为冲突或者其它原因而被拒绝引入的构件,打开 Maven 的调试标记运行
87 | mvn install -X
88 |
89 | ##构建装配Maven Assembly 插件是一个用来创建你应用程序特有分发包的插件
90 | mvn install assembly:assembly
91 |
92 | ##显示详细错误信息
93 | mvn -e
94 |
95 | ##验证工程是否正确
96 | mvn validate
97 |
98 | ##在集成测试可以运行的环境中处理和发布包
99 | mvn integration-test
100 |
101 | ##运行任何检查,验证包是否有效且达到质量标准
102 | mvn verify
103 |
104 | ##产生应用需要的任何额外的源代码,如xdoclet
105 | mvn generate-sources
106 |
107 | ##下载源码
108 | mvn -DdownloadSources=true
109 |
110 | ##下载javadoc
111 | mvn -DdownloadJavadocs=true
112 |
113 | ##先下载最新版本,再执行打包操作
114 | mvn -U package
--------------------------------------------------------------------------------
/mysql_dump.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | #在数据库的日常维护工作中,除了保证业务的正常运行以外,就是要对数据库进行备份,以免造成数据库的丢失,从而给企业带来重大经济损失。
3 | # 通常备份可以按照备份时数据库状态分为热备和冷备,按照备份数据库文件的大小分为增量备份、差异备份和全量备份。其中热备可以通过
4 | # mysql replication主从复制进行实时备份,percona的xtrabackup以及mysql自带的mysqldump等,
5 | # 可以根据不同需求使用不同的备份方案。虽然在生产环境已经使用mysql replication主从复制,但是还需要在计划任务中添加运行shell脚本
6 | # 在夜间业务不繁忙时进行数据库的全量备份,以便在发生主从复制失败时,主从数据库大量数据不一致后的主从复制的重做,同时进行完全备份
7 | # 可以更加保证数据库的安全性。以下是我在生产环境中使用的一个全备脚本,它的基本功能:1.自动压缩备份mysql数据库.2.自动删除近10天
8 | # 前的备份文件
9 | #3.删除时显示删除进度(可选).
10 | #Author absolutely.xu@gmail.com
11 | MAXIMUM_BACKUP_FILES=10 #最大备份文件数
12 | BACKUP_FOLDERNAME="database_backup" #数据库备份文件的主目录
13 | DB_HOSTNAME="localhost" #mysql所在主机的主机名
14 | DB_USERNAME="root" #mysql登录用户名
15 | DB_PASSWORD="123456" #mysql登录密码
16 | DATABASES=(
17 | "openfire"
18 | "csp" #备份的数据库名
19 | )
20 | #=========
21 | echo "Bash Database Backup Tool"
22 | #CURRENT_DATE=$(date +%F)
23 | CURRENT_DATE=$(date +%F) #定义当前日期为变量
24 | BACKUP_FOLDER="${BACKUP_FOLDERNAME}_${CURRENT_DATE}" #存放数据库备份文件的目录
25 | mkdir $BACKUP_FOLDER #创建数据库备份文件目录
26 | #统计需要被备份的数据库
27 | count=0
28 | while [ "x${DATABASES[count]}" != "x" ];do
29 | count=$(( count + 1 ))
30 | done
31 | echo "[+] ${count} databases will be backuped..."
32 | #循环这个数据库名称列表然后逐个备份这些数据库
33 | for DATABASE in ${DATABASES[@]};do
34 | echo "[+] Mysql-Dumping: ${DATABASE}"
35 | echo -n " Began: ";echo $(date)
36 | if $(mysqldump -h ${DB_HOSTNAME} -u${DB_USERNAME} -p${DB_PASSWORD} ${DATABASE} > "${BACKUP_FOLDER}/${DATABASE}.sql");then
37 | echo " Dumped successfully!"
38 | else
39 | echo " Failed dumping this database!"
40 | fi
41 | echo -n " Finished: ";echo $(date)
42 | done
43 | echo
44 | echo "[+] Packaging and compressing the backup folder..."
45 | tar -cv ${BACKUP_FOLDER} | bzip2 > ${BACKUP_FOLDER}.tar.bz2 && rm -rf $BACKUP_FOLDER
46 | BACKUP_FILES_MADE=$(ls -l ${BACKUP_FOLDERNAME}*.tar.bz2 | wc -l)
47 | BACKUP_FILES_MADE=$(( $BACKUP_FILES_MADE - 0 ))
48 | #把已经完成的备份文件数的结果转换成整数数字
49 |
50 | echo
51 | echo "[+] There are ${BACKUP_FILES_MADE} backup files actually."
52 | #判断如果已经完成的备份文件数比最大备份文件数要大,那么用已经备份的文件数减去最大备份文件数,打印要删除旧的备份文件
53 | if [ $BACKUP_FILES_MADE -gt $MAXIMUM_BACKUP_FILES ];then
54 | REMOVE_FILES=$(( $BACKUP_FILES_MADE - $MAXIMUM_BACKUP_FILES ))
55 | echo "[+] Remove ${REMOVE_FILES} old backup files."
56 | #统计所有备份文件,把最新备份的文件存放在一个临时文件里,然后删除旧的文件,循环出临时文件的备份文件从临时目录里移到当前目录
57 | ALL_BACKUP_FILES=($(ls -t ${BACKUP_FOLDERNAME}*.tar.bz2))
58 | SAFE_BACKUP_FILES=("${ALL_BACKUP_FILES[@]:0:${MAXIMUM_BACKUP_FILES}}")
59 | echo "[+] Safeting the newest backup files and removing old files..."
60 | FOLDER_SAFETY="_safety"
61 | if [ ! -d $FOLDER_SAFETY ]
62 | then mkdir $FOLDER_SAFETY
63 |
64 | fi
65 | for FILE in ${SAFE_BACKUP_FILES[@]};do
66 |
67 | mv -i ${FILE} ${FOLDER_SAFETY}
68 | done
69 | rm -rf ${BACKUP_FOLDERNAME}*.tar.bz2
70 | mv -i ${FOLDER_SAFETY}/* ./
71 | rm -rf ${FOLDER_SAFETY}
72 | #以下显示备份的数据文件删除进度,一般脚本都是放在crontab里,所以我这里只是为了显示效果,可以不选择这个效果。
73 |
74 | #CHAR=''
75 | #for ((i=0;$i<=100;i+=2))
76 | #do printf "Removing:[%-50s]%d%%\r" $CHAR $i
77 | # sleep 0.1
78 | #CHAR=#$CHAR
79 | #done
80 | # echo
81 | fi
--------------------------------------------------------------------------------
/mysqlmonitor.sh:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/skyformat99/shell_repository/64d0ce8d3271cb527c206cc1e0f5ca8dd9e99250/mysqlmonitor.sh
--------------------------------------------------------------------------------
/net.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | #查看http请求的header
4 | tcpdump -s 1024 -l -A -n host 192.168.9.56
5 | tcpdump -s 1024 -l -A src 192.168.9.56 or dst 192.168.9.56
6 | sudo tcpdump -A -s 1492 dst port 80
7 |
8 | #本地网络中IP地址为192.168.0.5的主机现在与外界通信的情况
9 | sudo tcpdump -i eth0 src host 192.168.0.5
10 |
11 | #查看网卡eth0的http请求的tcp包
12 | tcpdump -i eth0 port http
13 | tcpdump -i eth0 port http or port smtp or port imap or port pop3 -l -A | egrep -i 'pass=|pwd=|log=|login=|user=|username=|pw=|passw=|passwd=|password=|pass:|user:|userna me:|password:|login:|pass |user '
14 |
15 |
16 | #查看tcp,upd,icmp非ssh的包
17 | tcpdump -n -v tcp or udp or icmp and not port 22
18 |
19 |
20 | #查看http请求的request 包
21 | sudo tcpdump -i eth0 port 80 -w -
22 |
23 |
24 | #过滤http响应的get host头信息
25 | sudo tcpdump -i en1 -n -s 0 -w - | grep -a -o -E "GET \/.*|Host\: .*"
26 |
27 |
28 | #DNS查询请求响应包
29 | sudo tcpdump -i en0 'udp port 53'
30 |
31 | #nmap -sP指定使用Ping echo 进行扫描 /24查看目的网络有多少主机处于运行状态
32 | nmap -sP 192.168.0.1
33 | nmap -sP 192.168.0.0/24
34 | nmap -O www.baidu.com
35 |
36 | #Netstat主要用于Linux/Unix主机察看自身的网络状况,如开启的端口、在为哪些用户服务以及服务的状态
37 | netstat -a
38 | netstat -nlp
39 |
40 | #netcat扫描机器开放的端口
41 | nc -z -v -n 172.31.100.7 21-25
42 |
43 | #netcat 命令会连接开放端口21并且打印运行在这个端口上服务的banner信息。
44 | nc -v 172.31.100.7 21
45 |
46 | #输出网络的路由表
47 | route
48 |
49 | #显示结果包括服务器已经运行了多长时间,有多少登陆用户和对服务器性能的总体评估(load average)。
50 | uptime
51 |
52 | #监控 eth1 的网卡的流量
53 | iftop -i eth1
54 | #以位元组(bytes 即字节)为单位显示流量(预设是位元 bits):
55 | iftop -B
56 | #直接显示 IP, 不进行DNS 反解:
57 | iftop -n
58 | #直接显示连接埠编号, 不显示服务名称:
59 | iftop -N
60 | #显示某个网段进出封包流量
61 | iftop -F 192.168.1.0/24 or 192.168.1.0/255.255.255.0
62 |
63 |
64 | #网络流量实时监控工具之nload,查看网卡eth0的流量
65 | nload -n eth0
66 |
67 | #查看各个网卡的流量
68 | nload -h
69 |
70 | #IPTraf是一个网络监控工具,功能比nload更强大,可以监控所有的流量,IP流量,按协议分的流量,还可以设置过滤器
71 | iptraf
72 |
73 |
74 | #查看网络接口当前配置与接口命名:
75 | ifconfig
76 | #打开(up)或关闭(down)适配器
77 | ifconfig <网络名>
78 | #为适配器分配IP地址:
79 | ifconfig <网络名>
80 | #为适配器分配第二个IP地址:
81 | ifconfig <网络名:实例数>
82 |
83 | #显示某个网络适配器的驱动信息,适用于查询软件兼容性的情况:
84 | ethtool -i eth0
85 | #显示网络数据:
86 | ethtool -S
87 | #设置适配器连接速度(Mbps)
88 | ethtool speed <10|100|1000>
89 |
90 |
91 | #iwconfig 查基本的Wi-Fi网络设置,如SSID、channel和加密等细节。此外还可以修改一些高级设置,包括接收敏感度,RTS/CTS,碎片,以及重试数
92 | #显示当前无线设置,包括接口名称:
93 | iwconfig
94 | #设置ESSID(扩展服务设置识别器)或网络名:
95 | iwconfig <接口名> essid <网络名>
96 |
97 |
98 | #wget
99 | wget -S --spider http://osswin.sourceforge.net/ 2>&1 | grep Mod
100 |
101 | #查看mac地址
102 | cat /sys/class/net/*/address
103 |
104 | #查看eth0的ip
105 | ifconfig eth0 | awk '/inet addr/ {split ($2,A,":"); print A[2]}'
106 |
107 | #curl 查看页面对应的domail name
108 | curl -s http://en.m.wikipedia.org/wiki/List_of_Internet_top-level_domains | sed -n '//{s/<[^>]*>//g;p}'
109 |
110 | #talnet
111 | telnet localhost 6666
112 |
113 | #查看所有的网络接口
114 | awk '{print $1}' /proc/net/dev|grep :|sed "s/:.*//g"
115 |
116 |
117 | #查看DNS server版本好
118 | nslookup -q=txt -class=CHAOS version.bind NS.PHX5.NEARLYFREESPEECH.NET
119 |
--------------------------------------------------------------------------------
/performancetool.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | #查看当前系统load
3 | uptime
4 |
5 | #查看系统状态和每个进程的系统资源使用状况
6 | top
7 |
8 | #可视化显示CPU的使用状况
9 | htop
10 |
11 | #查看每个CPU的负载信息
12 | mpstat -P ALL 1
13 |
14 | #每隔1秒查看磁盘IO的统计信息
15 | iostat -xkdz 1
16 |
17 | #每隔一秒查看虚拟内存的使用信息
18 | vmstat 1
19 |
20 | #查看内存使用统计信息
21 | free
22 |
23 | #查看网络使用信息
24 | nicstat -z 1
25 |
26 | #类似vmstat的显示优化的工具
27 | dstat 1
28 |
29 | #查看系统活动状态,比如系统分页统计,块设备IO统计等
30 | sar
31 |
32 | #网络连接状态查看
33 | netstat -s
34 |
35 | #进程资源使用信息查看
36 | pidstat 1
37 | pidstat -d 1
38 |
39 | #查看某个进程的系统调用信息 -p后面是进程id,-tttT 进程系统后的系统调用时间
40 | strace -tttT -p 12670
41 | #统计IO设备输入输出的系统调用信息
42 | strace -c dd if=/dev/zero of=/dev/null bs=512 count=1024k
43 |
44 |
45 | #tcpdump 查看网络数据包
46 | tcpdump -nr /tmp/out.tcpdump
47 |
48 | #块设备的读写事件信息统计
49 | btrace /dev/sdb
50 |
51 | #iotop查看某个进程的IO操作统计信息
52 | iotop -bod5
53 |
54 | #slabtop 查看内核 slab内存分配器的使用信息
55 | slabtop -sc
56 |
57 | #系统参数设置
58 | sysctl -a
59 |
60 | #系统性能指标统计信息
61 | perf stat gzip file1
62 | #系统cpu活动状态查看
63 | perf record -a -g -F 997 sleep 10
--------------------------------------------------------------------------------
/process.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 | ## processes 进程管理
3 |
4 | ##ps查看当前系统执行的线程列表,进行瞬间状态,不是连续状态,连续状态需要使用top名称查看 更多常用参数请使用 man ps查看
5 | ps
6 |
7 | ##显示所有进程详细信息
8 | ps aux
9 |
10 | ##-u 显示某个用户的进程列表
11 | ps -f -u www-data
12 |
13 | ## -C 通过名字或者命令搜索进程
14 | ps -C apache2
15 |
16 | ## --sort 根据进程cpu使用率降序排列,查看前5个进程 -pcpu表示降序 pcpu升序
17 | ps aux --sort=-pcpu | head -5
18 |
19 | ##-f 用树结构显示进程的层次关系,父子进程情况下
20 | ps -f --forest -C apache2
21 |
22 | ##显示一个父进程的所有子进程
23 | ps -o pid,uname,comm -C apache2
24 | ps --ppid 2359
25 |
26 | ##显示一个进程的所有线程 -L 参数
27 | ps -p 3150 -L
28 |
29 | ##显示进程的执行时间 -o参数
30 | ps -e -o pid,comm,etime
31 |
32 | ##watch命令可以用来实时捕捉ps显示进程
33 | watch -n 1 'ps -e -o pid,uname,cmd,pmem,pcpu --sort=-pmem,-pcpu | head -15'
34 |
35 | ##jobs 查看后台运行的进程 jobs命令执行的结果,+表示是一个当前的作业,减号表是是一个当前作业之后的一个作业,jobs -l选项可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated,但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识;也就是说,jobs命令显示的是当前shell环境中所起的后台正在运行或者被挂起的任务信息
36 | jobs
37 |
38 | ##查看后台运营的进程号
39 | jobs -p
40 |
41 | ##查看现在被终止或者退出的进程号
42 | jobs -n
43 |
44 |
45 | ##kill命令 终止一个前台进程可以使用Ctrl+C键 kill 通过top或者ps获取进程id号 kill [-s 信号 | -p ] [ -a ] 进程号 ...
46 | ##发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。 关闭进程号12的进程
47 | kill 12
48 |
49 |
50 | ##等同于在前台运行PID为123的进程时按下Ctrl+C键
51 | kill -2 123
52 |
53 | ##如果任无法终止该程序可用“-KILL” 参数,其发送的信号为SIGKILL(9) ,将强制结束进程
54 | kill -9 123
55 |
56 | ##列出所有信号名称
57 | ##HUP 1 终端断线
58 | ##INT 2 中断(同 Ctrl + C)
59 | ##QUIT 3 退出(同 Ctrl + \)
60 | ##TERM 15 终止
61 | ##KILL 9 强制终止
62 | ##CONT 18 继续(与STOP相反, fg/bg命令)
63 | ##STOP 19 暂停(同 Ctrl + Z)
64 | kill -l
65 |
66 | ##得到指定信号的数值
67 | kill -l KILL
68 |
69 | ##杀死指定用户所有进程
70 | kill -u peidalinux
71 | kill -9 $(ps -ef | grep peidalinux)
72 |
73 | ##将后台中的命令调至前台继续运行 将进程123调至前台执行
74 | fg 123
75 |
76 | ##将一个在后台暂停的命令,变成继续执行
77 | bg 123
78 |
79 | ##该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思 下面输出被重定向到myout.file文件中
80 | nohup command > myout.file 2>&1 &
81 |
82 | ##at:计划任务,在特定的时间执行某项工作,在特定的时间执行一次。
83 | ## 格式:at HH:MM YYYY-MM-DD //HH(小时):MM(分钟) YYYY(年)-MM(月份)-DD(日)
84 | ##HH[am pm]+D(天) days //HH(小时)[am(上午)pm(下午)]+days(天)
85 | at 12:00(时间) //at命令设定12:00执行一项操作
86 | #at>useradd aaa //在at命令里设定添加用户aaa
87 | #ctrl+d //退出at命令
88 | #tail -f /etc/passwd //查看/etc/passwd文件后十行是否增加了一个用户aaa
89 |
90 | ##计划任务设定后,在没有执行之前我们可以用atq命令来查看系统没有执行工作任务。
91 | atq
92 |
93 | ##启动计划任务后,如果不想启动设定好的计划任务可以使用atrm命令删除。
94 | atrm 1 //删除计划任务1
95 |
96 | ##pstree命令:列出当前的进程,以及它们的树状结构 格式:pstree [选项] [pid|user]
97 | pstree
98 |
99 | ##nice命令:改变程序执行的优先权等级 应用程序优先权值的范围从-20~19,数字越小,优先权就越高。一般情况下,普通应用程序的优先权值(CPU使用权值)都是0,如果让常用程序拥有较高的优先权等级,自然启动和运行速度都会快些。需要注意的是普通用户只能在0~19之间调整应用程序的优先权值,只有超级用户有权调整更高的优先权值(从-20~19)。
100 | nice [-n <优先等级>][--help][--version][命令]
101 | nice -n 5 ls
102 |
103 | ##sleep命令:使进程暂停执行一段时间
104 | date;sleep 1m;date
105 |
106 |
107 | ##renice命令 renice命令允许用户修改一个正在运行进程的优先权。 利用renice命令可以在命令执行时调整其优先权。
108 | ##其中,参数number与nice命令的number意义相同。(1) 用户只能对自己所有的进程使用renice命令。(2) root用户可以在任何进程上使用renice命令。(3) 只有root用户才能提高进程的优先权
109 | renice -5 -p 5200 #PID为5200的进程nice设为-5
110 |
111 | ##pmap命令用于显示一个或多个进程的内存状态。其报告进程的地址空间和内存状态信息 #pmap PID
112 | pmap 20367
113 |
114 | ##top 动态查看进程的变化。
115 | top
116 |
117 |
118 | ##crontab 任务调度
119 | ##基本格式 :
120 | ##* * * * * command
121 | ##分 时 日 月 周 命令
122 | ##第1列表示分钟1~59 每分钟用*或者 */1表示
123 | ##第2列表示小时1~23(0表示0点)
124 | ##第3列表示日期1~31
125 | ##第4列表示月份1~12
126 | ##第5列标识号星期0~6(0表示星期天)
127 | ##第6列要运行的命令
128 | crontab -e ##执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)
129 |
130 | crontab -r ##删除目前的时程表
131 |
132 | crontab -l ##列出目前的时程表
133 |
134 | crontab file [-u user] ##-用指定的文件替代目前的crontab。
135 | #crontab文件的一些示例
136 | 30 21 * * * /usr/local/etc/rc.d/lighttpd restart ##表示每晚的21:30重启apache。
137 |
138 | 45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart ##表示每月1、10、22日的4 : 45重启apache。
139 |
140 | 10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart ##表示每周六、周日的1 : 10重启apache。
141 |
142 | 0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart ##表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。
143 |
144 | * 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart ##晚上11点到早上7点之间,每隔一小时重启apache
145 |
146 |
147 |
148 |
--------------------------------------------------------------------------------