概述
环境搭建
https://blog.csdn.net/tennysonsky/article/details/44410265
虚拟机VMware
1:CentOS的镜像ISO包下载到本地。
阿里云镜像站点 CentOS下载地址 : https://mirrors.aliyun.com/centos-vault/
2:开始VMware搭建虚拟机
1)虚拟化硬件资源,包括内存,硬盘,CPU等。
文件-新建虚拟机-典型-稍后安装操作系统-Linux+版本-虚拟机名称-默认最大磁盘大小+存储为单个文件
2)安装CentOS操作系统
CD/DVD-使用ISO镜像文件-选择下载好了的ISO文件-打开虚拟机(开始安装虚拟机)
Welcome to CenOS-Install or upgrade an existing system 安装或更新一个已经存在的系统
Disc Found磁盘发现-点击Skip略过
选择存储类型-Basic Storage Devices 磁盘类型
Hostname 主机名称
which type of installation would you like 选择哪种安装方式-Use All Space选择我所有的空间
writing storage configuration to disk 分区数据写入磁盘-write changes to disk 确定写入磁盘
3)虚拟机组网
本地机器的以太网 =》VMware软件的 VMware(相当于网关,故配置为x.x.1.1) =》虚拟机CentOS的NAT的VMware
第一步:虚拟机CentOS的NAT的VMware
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:0C:29:6A:75:29
TYPE=Ethernet
UUID=013cc1b8-bda3-43b7-b4f2-eb54d9c3ffb5
ONBOOT=no
NM_CONTROLLED=yes
BOOTPROTO=dhcp
##改为如下配置
DEVICE=eth0
HWADDR=00:0C:29:6A:75:29
TYPE=Ethernet
UUID=013cc1b8-bda3-43b7-b4f2-eb54d9c3ffb5
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.1.25
GATEWAY=192.168.1.1
NETMASK=255.255.255.0
DNS1=192.168.1.1
DNS2=8.8.8.8
##修改内容备注
ONBOOT=网络启用
BOOTPROTO=dhcp动态IP,static静态IP
IPADDR=CentOS的IP地址,自定义
GATEWAY=网关 192.168.1.1
NETMASK=子网掩码 255.255.255.0
DNS1=DNS服务器,可以网关一样 192.168.1.1
DNS2=备用DNS服务器 8.8.8.8
第二步:VMware软件的 VMware
编辑-虚拟网络编辑器-选择NAT模式的VMnet-NAT配置-网关192.168.1.1
第二步:本地机器的以太网
以太网-IPV4
IP地址 192.168.1.2
子网掩码:255.255.255.0
默认网关:192.168.1.1
首选DNS服务器:192.168.1.1
备用DNS服务器:8.8.8.8
根目录
在Linux世界里,一切皆文件。Linux的文件系统采用的是层级式树状结构,此结构中的最上层是根目录“/”。
目录 | 应放置文件内容 | 子目录 |
---|---|---|
/bin | 二进制(binary)可执行文件 | |
/boot | 开机文件与核心文件 | /boot/grub:开机 /boot/vmlinuz:核心 |
/dev | 所有外设相关文件 | /dev/null /dev/zero /dev/tty /dev/loop * /dev/sd * |
/etc | 配置文件 | /etc/passwd:用户信息 /etc/group:用户组信息 /etc/shadow:加密密码,登录信息 /etc/inittab 运行级别的配置文件 /etc/modprobe.d /etc/fstab /etc/issue /etc/opt:第三方协同软件 /opt 的相关配置文件 /etc/X11:X Window 有关的各种配置文件 /etc/sgm:SGML 格式有关的各项配置文件 /etc/xml:XML 格式有关的各项配置文件 /etc/hosts:储存 计算机网络 中各节点信息的计算机文件。这个文件负责将 主机名称 映射到相应的 IP地址 。hosts文件通常用于补充或替换网络中 DNS 的功能。和DNS不同的是,计算机的用户可以直接对hosts文件进行控制。 /etc/resolv.conf 是DNS配置文件。在网卡配置文件中进行配置,默认情况下 网卡配置文件DNS优先于/etc/resolv.conf。 /etc/hostname 在Centos 7,配置主机名,查看修改。 /etc/hosts ip与域名对应关系 ,解析域名(主机名),用/etc/hosts搭建网站的测试环境 (虚拟机)。不同服务器之间相互访问。 /etc/gateways 设置路由器 /etc/fstab file system table :文件系统挂载表,开机的时候设备与入口对应关系 开机自动挂载列表。 /etc/rc.local 开机自启 /etc/profile 环境变量配置文件 /etc/bashrc 命令别名 /etc/motd 文件中的内容 会在用户登录系统之后显示出来 /etc/issue /etc/issue.net 文件中的内容 会在用户登录系统之前显示出来 |
/home | 用户的家目录 | |
/lib | 系统运行相关的库文件 | /lib/modules/:驱动程序 |
/lost-found | 系统非正常关机而留下的“无家可归”的文件 | |
/media | 可移除的装置;比如软盘,光盘,DVD等 | /media/floppy /media/cdrom |
/mnt | 暂时挂载目录,临时安装文件的系统安装点 | |
/opt | 主要给源码安装软件时选择的安装目录位置(option : 自由选择) | |
/proc | 虚拟文件系统 ,存放着用户与内核的交互信息。放置的数据都是在内存当中 | /proc/cpuinfo /proc/dma /proc/interrupts /proc/ioports /proc/net/* |
/root | 系统管理员(root)的家目录 | |
/run | 系统开机后所产生的各项信息 | |
/sys | 核心与系统硬件信息较相关的信息 ,与/proc 非常类似 | |
/sbin | 开机过程中所需要的,里面包括了开机、修复、还原系统所需要的指令(system binary) | |
/srv | 系统启动网络服务后,这些服务所需要取用的数据目录(service) | /srv/www:WWW 服务器需要的网页资料 |
/selinux | 主要用来加固操作系统,提高系统的安全性 | |
/tmp | 临时文件,开机或者重启后应清空 | |
/usr | Unix 操作系统软件安装目录(unix software resource) | /usr/bin:全部的用户指令。此目录下不应该有子目录 /usr/src:原始码 /usr/lib:/lib 链接目录 /usr/local:系统管理员在本机自行安装自己下载的软件 /usr/sbin:非系统正常运作所需要的系统指令。/sbin链接目录 /usr/share:只读架构的数据文件 |
/var | 变动性的数据 | /var/log:登录文件放置的目录 /var/log/messages 存放的是系统的日志信息,它记录了各种事件,基本上什么应用都能往里写日志,在做故障诊断时可以首先查看该文件内容 /var/cache:用程序本身运作过程中产生的暂存档 |
命令
选项 | 含义 |
---|---|
帮助命令
help 查看内置命令的帮助文档
help 内置命令名称
help cd
help umask
注:
1)命令名称 --help
man 查看命令及配置文件的帮助文档
man 【1】 命令名称
man 【5】 配置文件名称
注:
1命令的帮助
5配置文件的帮助
例如:man passwd
因为系统的passwd即有命令,又有配置文件;而系统默认是查看命令的帮助,若想查看配置文件的帮助文档,则需要加水参数5。
whatis 查看命令简介
whatis 命令名称
apropos 查看配置文件简介
whatis 配置文件名称
history 查看历史命令
history
用户与用户组
存放目录 | 存放信息 | 格式 |
---|---|---|
/etc/passwd | 用户信息 | 用户名:口令:用户标识号:用户组标识号:注释性描述:主目录:登录shell |
/etc/group | 用户组信息 | 组名:口令:组标识号:组内用户列表 |
/etc/shadow | 加密密码,登录信息 |
useradd 创建用户
useradd 【选项】 用户名;
如果没有指定用户组,系统将自动创建与用户名一样的用户组;并创建/home/用户名。
useradd -d 指定家目录 用户名;给创建的用户指定家目录
useradd -g 用户组 用户名;创建用户时指定用户组。
用户组家目录/home/
passwd 指定密码
passwd 用户名;给用户指定密码。
userdel 删除用户
userdel 【选项】 用户名;
userdel -r 用户名 ;删除用户时同时删除家目录(一般不做此操作)。
usermod 修改用户所属用户组
usermod -g 用户组 用户名;
id 查看用户信息
id 用户名;.
id -un;显示自身用户名称
su 切换用户
su - 用户名;
从权限高的用户切换到权限低的用户不需要输入密码,反之则需要。
su -xx -c 切到之前的用户
exit 回退到原用户
exit;
groupadd 创建用户组
groupadd 组名;
groupdel 删除用户组
groupdel 组名;
文件操作
文件权限
当某个用户创建了一个文件后,默认这个文件的所在组就是该用户所在的组。
Linux 文件名命名:避免以下字符开头:- + .(文件名的开头为小数点.时, 代表这个文件为隐藏档);避免含有以下一些特殊字符:* ? > < ; & ! [ ] | ’ " ` ( ) { }
缩写 | 权限 | 数字 | 作用在文件上 | 作用在目录上 |
---|---|---|---|---|
r | suid权限(set UID) | 4 | read读权限; | read读权限; |
w | sgid权限(set GID) | 2 | write写权限;但是不能删除文件,如果需要删除文件,则该文件有读权限 | write写权限;增删改目录 |
x | sbit权限(Sticky Bit) | 1 | execute可执行权限;文件可以被执行 | execute可执行权限;可以进入该目录 |
文件类型 | 含义 |
---|---|
d | 文件夹 |
- | 文件 |
l | 软连接(快捷方式) |
c | 字符设备(鼠标键盘) |
b | 块文件(硬盘) |
0123456789
0文件类型
123所有者(用户)拥有的权限
456所在组(同用户组的用户)拥有的权限
789其他组(其他用户组的用户)拥有的权限
例如:-rwxr-xr–
表示是普通文件,所有者权限为读写与操作权限,用户权限为读与操作权限,其他组用户权限为读权限。
chmod 更改文件权限
方式一:chmod 【选项】 文件;
选项 | 含义 |
---|---|
u | 所有者 |
g | 所有组 |
o | 其他人 |
a | 所有人(u,g,o总和) |
= | 权限等于 |
+ | 权限加上 |
- | 权限减去 |
例如:给abc.txt文件的所有者读写执行权限,所在组增加读执行权限,其他组减去读执行权限。
chmod u=rwx,g+rx,o-rw abc.txt;
方式二:chmod 【权限数字】 文件;
chgrp 更改文件所属组
chgrp [-R] 用户组 filename;
chown 更改文件所属者
chown [-R] 用户 文件或目录
chown [-R] 用户:组名 文件或目录
chattr 更改文件底层权限
mkdir 创建目录
mkdir [-p] dirName
-p 确保父目录存在,不存在的就建一个。
touch 创建一个空文件
创建一个空文件或更改文件生成的时间
touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…]
a 改变档案的读取时间记录。
m 改变档案的修改时间记录。
c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一样。
f 不使用,是为了与其他 unix 系统的相容性而保留。
r 使用参考档的时间记录,与 --file 的效果一样。
d 设定时间与日期,可以使用各种不同的格式。
t 设定档案的时间记录,格式与 date 指令相同。
–no-create 不会建立新档案。
–help 列出指令格式。
–version 列出版本讯息。
tee 将输入流输出成文件
xarge 从文件或者输入流读取数据
ln 创建链接文件
ln -s 存放链接目录 链接文件;
ln -s -f /usr/local/bin/make /usr/bin/make
cp 复制文件
cp 【选项】src文件 dest文件;
选项 | 用途 |
---|---|
-r | 递归复制整个文件夹 |
-p | 保留源文件属性 |
如果想全部替换掉文件夹中的文件,可用cp进行不提示的强制覆盖。
scp 复制文件
从 本地Linux 复制到 远端Linux
scp /home/daisy/full.tar.gz root@172.19.2.75:/home/root
从 远端 复制到 本地
scp -r root@172.19.2.75:/home/root/full.tar.gz1 /home/daisy/full.tar.gz
sz 从Linux复制文件到windows
rz 从windows复制文件到Linux
mv 文件、目录移动或更名
mv 【选项】;
mv old文件名 new文件名;重命名。
mv move文件 target文件;移动文件。
rmdir 删除空目录
rmdir 目录;
rm 删除文件或目录
rm 【选项】 名称;删除一个文件或目录
-r 删除目录
-f 不提示直接删除
-v 显示删除进度
split 文件分割
split -5 a.txt//将a.txt每5行分割为一个文件
cd 切换目录
cd ~ 跳到 home 家目录 cd …/ 跳到 上一层 目录
ls 显示目录列表
ls 【选项】
ls -l /home | grep "^-" | wc -l#统计/home 文件夹下文件的个数
ls -l /home | grep "^d" | wc -l#统计/home 文件夹下目录的个数
ls -lR /home | grep "^-" | wc -l#统计/home 文件夹下文件的个数,包括子文件夹里的
ls -lR /home | grep "^d" | wc -l#统计文件夹下目录的个数,包括子文件夹里的
ls -ltr /home #按时间排序查看目录中的文件
选项 | 含义 |
---|---|
-a | 显示所有,包括隐藏的 |
-l | 列表格式显示 |
-h | 显示文件大小 |
-t | |
-r |
lsattr 查看文件底层权限
pwd 显示当前工作目录路径
find 查找文件路径
find 【搜索范围】【选项】文件名称
选项 | 含义 |
---|---|
-name | 文件名 |
-user | 用户名称 |
-size +5M | 按照大小寻找。+20M大于20兆;-20M小于20兆;20M等于20兆。 |
-size +5M -a -size -15M | 按照大小寻找。大于5兆并且小于15兆 |
-size +5M -o -size -15M | 按照大小寻找。大于5兆或者小于15兆 |
-type -f 文件类型 | 文件 |
-type -d 目录类型 | 目录 |
-type -l 链接类型 | 链接 |
-group | 属组 |
-amin +5 | 5分钟内被访问过的文件或目录 |
-cmin +5 | 5分钟内被修改过属性的文件或目录 |
-mmin +5 | 5分钟内被修改过内容的文件或目录 |
locate 快速查找文件路径
locate 【选项】文件名称
注:
1:使用locate前,必须先使用updatedb创建locate数据库。如:
updatedb
locate 文件名称
2:如果目标文件在tmp目录下,即使updatedb,也无法使用locate搜索出文件所在路径
3:find的升级
选项 | 含义 |
---|---|
-i | 忽略大小写 |
-c | 只显示个数 |
-r<正则表达式> | 使用正则表达式进行查找匹配 |
which 查找指令所在路径及别名
which 指令
whereis 查找指令所在路径及帮助文档
whereis 指令
grep 在文件中查找关键字
grep 【选项】查找关键字 查找文件或目录
#非压缩包
grep –i "被查找的字符串" 文件名
grep –i "当前存在" 文件名
#gz压缩包
zgrep –i "被查找的字符串" 文件名
#zip压缩包
gzip -dc myfile.gz | grep 'Exception' | more
选项 | 含义 |
---|---|
-A n | 查找关键字出现的后n行 |
-B n | 查找关键字出现的前n行 |
-C n | 查找关键字出现的上下n行 |
-i | 忽略大小写 |
-n | 显示行号 |
-v | 搜索不含指定字符串的行。字符串是行开头的需要加上号,如#表示搜索不含#的行,即显示不是注释的内容 |
-r | |
-e |
basename 获取文件名
basename 路径 【要截取的后缀】
basename /home/abc.sh
结果为:abc.sh
basename /home/abc.sh .sh
结果为:abc
dirname 获取目录名
dirname 路径
dirname /home/abc.sh
结果为:/home
纯文本文件操作命令
echo 显示环境变量
echo $PATH;显示环境变量
cat 只读形式显示
cat /proc/version;正在运行的内核版本
cat /etc/issue;发行版本信息
cat / proc / cpuinfo显示CPU信息的信息
cat / proc / interrupts显示中断
cat / proc / meminfo校验内存使用
cat / proc / swaps显示哪些交换被使用
cat / proc / version显示内核的版本
cat / proc / net / dev显示网络适配器及统计
cat / proc / mounts显示已加载的文件系统
-n 显示行号;
more 分页显示
Ctrl+F 向下翻页
Ctrl+B 向上翻页
less 分页显示
more的强化版,不会全部加载出来,只会一页页加载,对于大文件查看效率更高。
head 显示文件开头
head -n 5;显示开头的5行
tail 显示文件尾部
tail -f 文件名;实时显示文本信息。
tail -n 5 文件名;查看文件的最后5行。
查看反制log打印
tail -f /home/log/depoly.log
查看反制rules打印
tail -f /isec/rules/反制文件
查看板卡绑定情况
tail -f /icare/dpdk/tools/dpdk_nic_bind.py
查看控制台打印
tail -f /home/log/catalina.outsuperman
diff 比较两个文件的差异
vi/vim 文本编辑器
vi/vim [参数] 文件名
-b 打开二进制文件
-d A B 比较A文件与B文件的差异性
-R 只读模式打开文件
+number
实例:
vim /etc/sysconfig/network-scripts/ifcfg-eth0 --网卡配置文件 配置ip DNS地址
vim是vi的加强版,非系统自带需要安装。安装步骤如下:
yum -y install vim*
输入模式:i
命令行模式:ESC
命令行 | 含义 |
---|---|
:w | 保存 |
:q | 离开 |
:q! | 强制离开不保存 |
:wq | 保存离开 |
ctrl+ b u d f | 显示内容滚动 半/一 屏 |
yy | 向下拷贝行。5yy向下拷贝5行 |
p | 粘贴 |
dd | 向下删除行。5dd向下删除5行 |
/字符 | 向下寻找字符。n 重复前一个搜寻的动作;N 反向进行前一个搜寻动作 |
?字符 | 向上寻找字符。n 重复前一个搜寻的动作;N 反向进行前一个搜寻动作 |
:行 | 跳到指定行 |
???? | 跳到最后一行 |
n,m s/oldString/newString | 在n到m行中将oldString替换成newString |
:set fileencoding | 查看编码 |
:set fileencoding=编码格式 | 改变编码格式 |
:set number | 显示行号 |
:set nonumber | 隐藏行号 |
### wc -c +filename
> 统计文件中单词的个数。
### tac 反向显示文本文件内容
### vimdiff 文本比较和合并
### nl 添加行号显示文本文件内容
nl [-bnw] 文件
选项与参数: -b :指定行号指定的方式,主要有两种:
-b a :表示不论是否为空行,也同样列出行号(类似 cat -n); -b t :如果有空行,空的那一行不要列出行号(默认值); -n :列出行号表示的方法,主要有三种:
-n ln :行号在屏幕的最左方显示;
-n rn :行号在自己字段的最右方显示,且不加 0 ; -n rz :行号在自己字段的最右方显示,且加 0 ; -w :行号字段的占用的字符数。
### diff 显示两个文本文件的差异
### file 文件类型与编码格式
### iconv 文本转换编码格式
## 非纯文本文件查看
### od
od [-t TYPE] 文件
选项或参数: -t :后面可以接各种『类型 (TYPE)』的输出,例如:
a :利用默认的字符来输出;
c :使用 ASCII 字符来输出
d[size] :利用十进制(decimal)来输出数据,每个整数占用 size bytes ;
f[size] :利用浮点数(floating)来输出数据,每个数占用 size bytes ;
o[size] :利用八进制(octal)来输出数据,每个整数占用 size bytes ;
x[size] :利用十六进制(hexadecimal)来输出数据,每个整数占用 size bytes ;
### source
source FileName
作用:在当前bash环境下读取并执行FileName中的命令。
注:该命令通常用命令".”来替代。
使用范例:
1、source filename
2、. filename(中间有空格)
dos2unix windows文件转Linux文件
Linux 换行符 /n
windows 换行符 /r/n
unixtodos Linux文件转windows文件
sed 流编辑器
awk 切
解压缩
gzip 生成gz压缩包
gzip 文件;
压缩后的文件将不存在,只存在gz压缩包。
gunzip 解压gz包
gunzip 文件;
解压后的gz压缩包将不存在,只存在文件。
zip 生成压缩包
zip 【选择项】压缩包命名 文件;
-r 压缩整个目录
unzip 解压包
unzip 【选择项】解压后存放目录 压缩包文件;
-d 解压后存放的目录
tar 解压缩tar.gz包
tar 【选项】 操作后文件 操作前文件
打包:tar -zcvf 打包后tar.gz包名称 文件1 文件2 文件n;
解压:tar -zxvf tar.gz包名称 -C 解压后文件 ;(目录必须存在,否则将报错)
选项 | 含义 |
---|---|
-c | 创建tar包 |
-x | 解开tar包 |
-t | 查看 tar包 里的文件 |
特别注意,c/x/t 仅能存在一个! | |
-z | 打包的同时压缩 |
-j | 是否需要用 bzip2 压缩/解压缩 |
-v | 显示打包的过程 |
-f | 指定压缩后tar包名 |
-p | 保留原文件的原始属性 |
-P | 打包文件时使用绝对路径 |
jar 包
jar -xvf 文件名 -d 指定解压到的目录 解压
jar -xvf 文件名 -C 存放目录 打包
##### bzip2 bz2包
##### bunzip2
##### bzcat
##### bzcmp
bzdiff
bzgrep
#### Z包
##### compress
##### uncompress
##### znew
将Z包重新压缩为gz包
#### zip包
##### zip
##### unzip
##### zipinfo
##### zipsplit
arj包
arj
unarj
#### war包
系统命令
init 切换到指定运行级别
系统运行级别
级别 | 用途 |
---|---|
0 | 关机 |
1 | 单用户(找回丢失密码) |
2 | 多用户无网络标识 |
3 | 多用户有网络标识 |
4 | 保留 |
5 | 图形界面 |
6 | 重启 |
修改运行级别:
方式一:修改/etc/inittab 运行级别的配置文件。找到id:xxx initdefault的一行,修改xxx为对应的运行级别。
方式二:init 【012356】;
问题:如果忘记root登录密码,如何找回。
答案:进入单用户模式,然后修改root密码。
原因:因为单用户模式下,root不需要密码就可以登录。只能在系统机器上进行操作,无法shell远程连接。
问题:设置Linux系统开机后默认的模式(命令行或图形界面)。
答案:修改/etc/inittab文件中id:5:initdefault的数字。
问题:Linux系统开机流程
答案:开机->BIOS->/boot->init进程1->运行级别->运行级别对于的服务。
sync 将内存中的数据写入磁盘
reboot 重启
备注:重启前首先运行sync将内存中的数据写入磁盘
shutdown 关机
shutdown -h now 立即关机
shutdown -h 10 10分钟后关闭系统
shutdown -r now 重启系统
备注:关机前首先运行sync将内存中的数据写入磁盘
etc 重启服务
/etc/init.d/xxx restart/start/stop;重启/启动/暂停 xxx服务
ls -l /etc/init.d/; 查看系统服务
setup 查看系统服务
安装setuptool
yum -y install setuptool
系统服务管理
yum -y install ntsysv
setup中配套的防火墙设置也得装上去
yum -y install system-config-securitylevel-tui
安装setup中配套的网络设置
yum -y install system-config-network-tui
最后安装一下时区同步。
yum -y install system-config-date
service 对系统服务进行管理
service 【服务的名称】 【控制命令】
service mysqld restart;mysql重启
service iptables status;查看防火墙状态
控制命令:启动(start)、停止(stop)、重启(restart)、查看状态(status)
service 操作某个服务的状态会立马生效,但是系统重启后,会回退到默认状态。
chkconfig 管理不同运行级别下的服务
chkconfig 【选项】
chkconfig --list;显示服务的不同运行级别下自启动选项
chkconfig --level 5 iptables off;将防火墙在运行级别为5的时关闭
chkconfig iptables on;将防火墙在所有级别时开启
选项 | 含义 |
---|---|
–list 【服务名称】 | 显示服务的不同运行级别下自启动选项 |
–add 【服务名称】 | 添加一个系统服务 |
–del 【服务名称】 | 删除一个系统服务 |
–level 【运行级别】 【服务名称】 【启动选项】 | 设置服务的不同运行级别下自启动选项 启动选项:on,off,reset |
systemctl 对系统服务进行管理
在CentOS7后,不在使用service,而是使用systemctl。
crontab 定时任务
crontab 【选项】
选项 | 含义 |
---|---|
-e | 修改 crontab 文件,当不存在时会自动创建 |
–l | 显示 crontab 文件 |
-r | 删除 crontab 文件 |
-i | 提示 |
service crontab restart 重启任务调度器
如果显示crond: unrecognized service则yum -y install vixie-cron
clear 清屏
logout 退出登录
last 显示登录的用户列表
last
#用户名 登录终端 登录IP 登录时间
root pts/0 192.168.1.2 Thu May 28 12:53 still logged in
root pts/0 192.168.1.2 Thu May 28 11:43 - 12:52 (01:09)
root pts/0 192.168.1.2 Thu May 28 07:31 - 11:43 (04:11)
root pts/5 192.168.1.2 Thu May 28 03:59 - 03:59 (00:00)
root pts/4 192.168.1.2 Thu May 28 03:58 - 07:30 (03:31)
root pts/3 192.168.1.2 Wed May 27 07:57 - 07:30 (23:32)
root pts/3 192.168.1.2 Wed May 27 07:30 - 07:57 (00:26)
root pts/2 192.168.1.2 Wed May 27 06:51 - 07:30 (1+00:38)
root pts/1 192.168.1.2 Wed May 27 06:17 - 07:30 (1+01:13)
root pts/0 192.168.1.2 Wed May 27 06:08 - 07:30 (1+01:22)
root tty1 Wed May 27 05:52 still logged in
reboot system boot 2.6.32-431.el6.x Wed May 27 05:52 - 13:52 (1+08:00)
root tty1 Wed May 27 05:34 - down (00:18)
reboot system boot 2.6.32-431.el6.x Wed May 27 05:33 - 05:52 (00:18)
#注:通过查看用户登录信息,可以及早的发现系统非正常登录信息,如reboot非正常重启等,以加强系统安全性
lastlog 显示最后一次登录的用户列表
### getconf 系统的配置信息
### uptime 系统运行时间,用户数,平均负载
### 查看系统用户及密码
在linux系统中,用户名被存放在了/etc/passwd这个文件中;密码存放在/etc/shadow中
cat /etc/passwd 查看系统中的所有用户名
cat /etc/shadow | grep 用户 查看用户密码
### **authconfig** 算法
authconfig --test | grep hashing 查看系统使用了什么加密方式
source 执行脚本
source FileName
作用:在当前bash环境下读取并执行FileName中的命令。
注:该命令通常用命令".”来替代。
使用范例:
1、source filename
2、. filename(中间有空格)
sh 执行脚本
. 执行脚本
进程命令
| 管道
进程间单向通信的机制
ps 查看进程
ps 【选项】;
ps -aux;显示系统所有进程
输出格式:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 19232 1496 ? Ss 04:33 0:01 /sbin/init
ps -ef;以全格式显示所有进程,包括父进程。
输出格式:
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 04:33 ? 00:00:01 /sbin/init
ps -aux|grep xxx;查询xxx的进程信息
输出格式 | 含义 |
---|---|
USER | 用户名 |
PID | 进程ID |
PPID | 父进程ID。0代表无父进程 |
C | CPU执行优先级。 数值越大,表示进程是CPU密集型计算,执行优先级会降低。 数值越小,表示进程是IO密集型计算,执行优先级会提高。 |
STIME | 启动时间 |
CMD | 启动进程时使用的命令和参数 |
%CPU | 占用CPU |
%MEM | 占用内存 |
VSZ | 占用虚拟内存大小KB |
RSS | 占用物理内存大小KB |
TTY | 使用终端名称 |
STAT | 进程状态(D 不可中断。R 运行。S 睡眠。s会话的先导进程。T 停止。Z 僵死) |
START | 启动时间 |
TIME | 占用CPU总时间(执行的时间) |
COMMAND | 启动进程时使用的命令和参数 |
选项 | 含义 |
---|---|
a | 当前终端的所有进程 |
u | 显示所有用户的所有进程 |
x | 显示没有终端的进程 |
r | 仅显示正在运行的进程 |
e | 显示所有进程 |
f |
pstree 显示进程树
pstree
#输出格式示例:
init─┬─auditd───{auditd}
├─crond
├─master─┬─pickup
│ └─qmgr
├─6*[mingetty]
├─rsyslogd───3*[{rsyslogd}]
├─sshd─┬─sshd───bash
│ └─sshd───bash───pstree
└─udevd───2*[udevd]
选项 | 含义 |
---|---|
p | 显示进程ID |
u | 显示进程所属用户 |
n |
#根据进程号获取所有子进程的PID
pstree -pn <pid>
jobs 显示任务列表
nohup 不挂断进程
将程序以忽略挂起信号的方式运行起来,被运行的程序的输出信息将不会显示到终端
watch 显示命令周期性执行的信息
lsof 列出当前系统打开的文件描述符工具
查询感兴趣的描述符是被哪些进程使用
参数 | 描述 |
---|---|
-i | 显示sokcet文件描述符 |
-c | 显示指定的命令打开的所有文件描述符 |
-t | 仅显示打开了目标文件描述符的进程pid |
#列出所有的网络链接
lsof -i
#列出所有udp的网络链接
lsof -i udp
#列出谁在使用某个端口。端口的使用线程信息
lsof -i:3306
#列出谁在使用特定的tcp端口
lsof -i tcp:80
#根据文件描述范围列出文件信息
lsof -d 2-3
kill 通过进程ID终止进程
kill 【选项】进程ID;通过进程ID终止进程
选项 | 含义 |
---|---|
l | 显示系统支持的信号 |
a | 当处理当前进程时,不限制命令名和进程号的对应关系 |
s | 指定向进程发送的信号 |
p | 指定kill 命令只打印相关进程的进程号,而不发送任何信号 |
u | 指定用户 |
9 | 强制终止 |
HUP 1 终端断线 INT 2 中断(同 Ctrl + C) QUIT 3 退出(同 Ctrl + ) TERM 15 终止 KILL 9 强制终止 CONT 18 继续(与STOP相反, fg/bg命令) STOP 19 暂停(同 Ctrl + Z) |
killall 通过进程名称终止进程
kill 【选项】进程名称;通过进程名称终止进程
选项 | 含义 |
---|---|
l | |
a | |
s | |
p | |
u |
top 动态监控(显示)进程
top 【选项】;
显示格式:
top - 16:48:45 up 8 min, 2 users, load average: 0.00, 0.01, 0.00
top - 当前时间 up 运行时间, 当前系统登录用户数 users, 负载均衡: a, b, c
平均负载=(a+b+c)/3,如果大于0.7则系统有点跑不动了
Tasks: 72 total, 1 running, 71 sleeping, 0 stopped, 0 zombie
Tasks: 总任务数 total,允许任务数 running,睡眠任务数 sleeping,停止任务数 stopped,僵死进程数 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Cpu(s): 用户占比us,系统占比sy, 0.0%ni,空闲占比id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1004412k total, 158860k used, 845552k free, 22572k buffers
Mem: 总内存 total, 使用内存 used, 可用内存 free, 22572k buffers
Swap: 2031608k total, 0k used, 2031608k free, 38324k cached
Swap: 总虚拟内存 total, 0k used, 可用虚拟内存 free, 38324k cached
选项 | 含义 |
---|---|
-d | 指定每隔几秒刷新屏幕。默认3秒刷新一次,可用空格键立即刷新。 |
-i | 不显示任何闲置或者僵死的进程 |
-p | 指定进程ID来监控此进程的状态 |
交互参数 | 含义 |
---|---|
U | 输入用户名,筛选出该用户下所有的进程。 |
K | 输入进程ID,终止进程。 |
P | 按CPU占有率大小排序 |
M | 按内存大小排序 |
N | 按进程ID大小排序 |
网络管理
netstat 查询网络状态
netstat 【选项】;
#查询本机所有网络接口
netstat -an
#输出
#协议 接受数据包队列 发送数据包队列 本地地址 远程地址 状态 线程ID 名称
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 64 192.168.1.25:22 192.168.1.2:50359 ESTABLISHED 1183/sshd
#列出本机路由
netstat -rn
#列出所有连接
netstat -a
#只列出TCP或者UDP
netstat -at
netstat -au
#列出监听中的连接端口
netstat -tnl
#获取进程名、进程号以及用户 ID
nestat -nlpt
#打印统计信息
netstat -s
#持续输出
netstat -ct
#打印active状态的连接
netstat -atnp | grep ESTA
#查看服务是否运行(npt)
netstat -aple | grep ntp
选项 | 含义 |
---|---|
-a | 查看所有端口 |
-t | 仅显示TCP连接 |
-u | 仅显示UDP连接 |
-l | 查看监听端口 |
-n | 使用IP地址表示主机 |
-p | 显示socket所属的进程的PID和名字 |
-i | 显示网卡接口数据流量 |
-r | 显示路由信息。路由表是Linux主机与外界通信所必须的,如果路由表错误,将导致Linux主机无法与外界进行通信。 |
-c | 每隔1s输出一次 |
-o | 显示socket定时器的信息 |
nslookup 手动解析域名
nslookup 域名;查询域名对应的IP地址。
Non-authoritative answer代表非此域名服务器给出的域名解析信息。
nslookup 进入交互式查询。
server 指定解析域名的服务器地址。
set 关键字=值 设置查询域名的属性值。 type=MX域名的邮件转发器。type=PRT查询IP地址所代表的域名
arp 操纵本机的arp缓冲区
ipconfig Windows查询网卡接口
ipconfig 【选项】
选项 | 含义 |
---|---|
/all | 所有信息。包括掩码,DNS服务器等。 |
ifconfig Linux查看与配置网卡
#查看网卡信息
ifconfig
#输出
#eth0,eth1,eth.. 本地真实网卡
eth0 Link encap:Ethernet HWaddr 00:0C:29:EA:32:2C
#网络类型:以太网 MAC地址
inet addr:192.168.1.5 Bcast:192.168.1.255 Mask:255.255.255.0
#ip地址 广播地址 子网掩码
inet6 addr: fe80::20c:29ff:feea:322c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:362772 errors:0 dropped:0 overruns:0 frame:0
#接受包数量 出错数量 丢失数量
TX packets:195415 errors:0 dropped:0 overruns:0 carrier:0
#发送包数量 出错数量 丢失数量
collisions:0 txqueuelen:1000
RX bytes:444841815 (424.2 MiB) TX bytes:28566316 (27.2 MiB)
#lo 主机的回环地址,这个一般是用来测试一个网络程序,但又不想让局域网或外网的用户能够查看,只能在此台主机上运行和查看所用的网络接口。
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:29 errors:0 dropped:0 overruns:0 frame:0
TX packets:29 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1688 (1.6 KiB) TX bytes:1688 (1.6 KiB)
#配置网卡
ifconfig 【网络接口】【ip地址】【配置选项】
#配置网络接口eth0的ip地址为192.168.1.111,并指定广播地址与子网掩码,注意:此时能够成功ping此IP,但是不能ping域名,还需要route配置路由。
ifconfig eth0 192.168.1.111 broadcast 192.168.0.255 netmask 255.255.255.0
#激活网卡
ifconfig eth0 192.168.1.111 up
#注:如果把电脑看成一台手机,那网卡就是SIM卡,IP就是电话号码
配置选项 | 含义 |
---|---|
up | 激活网卡 |
down | 关闭网卡 |
mtu | 设置网卡的最大传输单元 |
dstaddr | 设置点对点连接的远程IP |
broadcast | 设置网卡的广播地址 |
netmask | 设置网卡的子网掩码 |
add | 给指定网卡配置IPv6地址 |
del | 删除指定网卡的IPv6地址 |
irq | 指定网卡的中端号 |
io_addr | 设置IO地址 |
media | 设置物理端口或媒体类型 |
hw | 设置网卡的MAC物理地址 |
multicast | 设置网卡的多播标志 |
route 路由
选项 | 含义 |
---|---|
traceroute 报文到主机所经过的路由
traceroute 【选项】【IP或主机名】
#注:默认使用ICMP报文进行路由追踪,默认报文大小40字节,最多经过30个路由器,对每个路由节点都测试3次,返回这3次的时间值来表示到达改路由节点的速度,如果测试超时,则用*代替。
选项 | 含义 |
---|---|
nmap
nmap <扫描类型><扫描参数>
想查看TCP或者UDP端口使用情况,使用 netstat -anp
如果有些进程看不见,如只显示”-”,可以尝试
sudo netstat -anp
如果想看某个端口的信息,使用lsof命令,如:
sudo lsof -i :631
-bash-3.00# netstat -tln
netstat -tln 命令是用来查看linux的端口使用情况
/etc/init.d/vsftp start 是用来启动ftp端口~!
看文件/etc/services
netstat
查看已经连接的服务端口(ESTABLISHED)
netstat -a
查看所有的服务端口(LISTEN,ESTABLISHED)
sudo netstat -ap
查看所有 的服务端口并显示对应的服务程序名
nmap <扫描类型><扫描参数>
例如:
nmap localhost
nmap -p 1024-65535 localhost
nmap -PT 192.168.1.127-245
当我们使用 netstat -apn 查看网络连接的时候,会发现很多类似下面的内容:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 52 218.104.81.152:7710 211.100.39.250:29488 ESTABLISHED 6111/1
显示这台服务器开放了7710端口,那么 这个端口属于哪个程序呢?我们可以使用 lsof -i :7710 命令来查询:
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
sshd 1990 root 3u IPv4 4836 TCP *:7710 (LISTEN)
这样,我们就知道了7710端口是属于sshd程序的。
ping 测试主机网络连通性
ping 【选项】域名或IP地址
#向192.168.2.111发送4个ICMP包
ping -c 4 192.168.2.111
#输出:
4 packets transmitted, 4 received, 0% packet loss, time 3026ms
#4 发出的数据包数目, 4 返回的数据包数目, 0% 丢包率, 耗时 3026ms
rtt min/avg/max/mdev = 0.403/3.012/10.699/4.438 ms
#rtt往返时延
#以最快的速度,最大的包进行ping,可用于测试目标主机的承压能力
ping -f -s 65507 10.0.0.52
#此用法非常危险,65535(包头+内容)*100个包每秒=6.25MB,每秒发送6.25MB的数据,相当于50Mbps的带宽,完全可能导致目标主机拒绝服务。请勿用于非法用途,造成不良后果自负。
注:如ping不通,可能对方不在线,或者对方开着防火墙!
选项 | 含义 |
---|---|
-c n | 指定ICMP报文发送次数为n,如果不指定此参数,将会一直发送包。 |
-s count | 指定ICMP数据包大小为count。windows最大值为65500,linux最大值为65507。 |
-n count | 发送 count 指定的 ECHO 数据包数。默认值为 4。(一般用来计算丢包率) |
-l length | 发送 length 大小的 ECHO 数据包。默认为 32 字节;最大值是65500。 |
-f | 源IP没有收到应答报文或超时时间还未到时,就立即发送下一个请求报文 |
-i ttl | 请求报文发送间隔时间。ttl 生存时间 |
-R | 显示报文经过的路由器信息 |
-t | 一直Ping 直到中止操作(测试网络稳定性) |
-a | 将地址解析为计算机名 |
-v tos | tos服务类型 |
-r count | 在"记录路由"字段中记录传出和返回数据包的路由。count 可以指定最少 1 台,最多 9 台计算机。 |
-j computer-list | computer-list 利用 computer-list 指定的计算机列表路由数据包。连续计算机可以被中间网关分隔(路由稀疏源)IP 允许的最大数量为 9。 |
-k computer-list | computer-list 利用 computer-list 指定的计算机列表路由数据包。连续计算机不能被中间网关分隔(路由严格源)IP 允许的最大数量为 9。 |
-w timeout | 指定超时间隔,单位为毫秒。 |
destination-list | 指定要 ping 的远程计算机。 |
telnet 远程登录
telnet IP;远程登录。
telnet IP port号;检测某个端口是否在监听且可以访问。
tcpping
route 显示系统路由表
iptables 防火墙
-L 显示包过滤防火墙的规则设置
nmcli 网卡的查看与配置
nmcli[ OPTIONS ] OBJECT { COMMAND | help }
查看网卡UUID
nmcli con show
查看网卡mac地址
nmcli dev show
nc 监听端口
nc -lk 端口:监听端口
nc–>“瑞士军刀”。不知大家在渗透过程中,拿了shell有没有使用nc搞点事儿。它用来快速构建网络链接。常用来调试客户端程序。
参数 | 描述 |
---|---|
-i | 设置数据包传送的时间间隔 |
-l | 以服务器方式运行。默认为客户端运行 |
-k | 重复接受并处理某个端口上的所有链接 |
-p | 以客户端运行时强制其使用指定端口 |
-C | 将CR和LF两个字符作为结束符 |
-u | 使用udp协议。默认tcp协议 |
-X | nc客户端余代理服务器通信时默认为socks5协议。 |
-z | 扫描目标机器某个范围服务是否开启 |
小贱上案例
执行任务 | 执行命令 |
---|---|
扫描机器A端口号在30-40的服务 | nc -z A 30-40 |
连接服务器A 端口号为5000 | nc -C A 5000 |
传送文件 | MachineA:nc -v -n ip portE:a.exe |
资源命令
vmstat
vmstat能够实时输出系统的进程信息,内存使用,cpu使用等资源的使用情况
参数 | 描述 |
---|---|
-f | 显示系统自启动以来执行的fork次数 |
-s | 显示内存相关统计信息 |
-d | 显示磁盘相关统计信息 |
-p | 显示指定磁盘分区统计信息 |
count | 采样次数。 |
看一下vmstat都有哪些输出字段。
在这里插入图片描述
字段名 | 描述 |
---|---|
procs | r表示等待运行的而进程数目。b表示处于不可中断睡眠状态的进程数目 |
memory | swpd:使用的虚拟内存量。free:空闲内存量。buff:用作缓冲区的内存量。cache:用作缓存的内存量。 |
swap | si:从磁盘换入的内存量(/s)。so:交换到磁盘的内存量(/s)。 |
io | bi:从块设备接收的块(blocks/s)。bo:发送到块设备的块(blocks/s)。 |
system | in:每秒中断的次数,包括时钟。cs:每秒上下文切换的次数。 |
这里注意哈,如果查看磁盘的更加详细信息,有另外iostat所得到的信心就更加详细哟
mpstat
能够实时监测多处理器系统中各个cpu的使用情况。这个命令的执行需要安装sysstat,在centos中执行yum install systat就好了。
在这里插入图片描述
然后我们看看各个字段什么意思。
字段 | 描述 |
---|---|
cpu | 表示当前条信息属于哪个cpu的数据 |
%usr | 进程运行在用户空间所占cpu运行时间的比例 |
%nice | nice值为负的进程运行在用户空间的时间占cpu总运行时间的比例 |
%iowait | cpu等待磁盘操作的时间占cpu总运行时间的比例 |
%irq | cpu用于处理硬件中断时间占cpu总运行时间的比例 |
%soft | cpu用于处理软件中断的时间占cpu用运行时间的比例 |
%steal | 一对虚拟cpu。当超级管理员在处理某个虚拟cpu时,另一个等待它处理完才能运行。这段等待时间表示为steal时间占总运行时间的比例 |
%guest | 运行虚拟cpu时间占cpu总运行时间的比例 |
%idle | 系统空闲时间占cpu总运行时间的比例 |
free 内存使用情况
选项 | 含义 |
---|---|
df 磁盘空间及使用情况
df 【选项】
选项 | 含义 |
---|---|
-h | 查看磁盘空间及使用情况 |
du 目录的磁盘使用情况
du 【选项】
du -ach --max-depth=1 /opt #查询/opt目录磁盘占用情况,深度为1
du -h --max-depth=1 |grep 'G' |sort #查看上G目录并排序
du -sh --max-depth=1 #查看当前目录下所有一级子目录文件夹大小
du -h --max-depth=1 |sort #查看当前目录下所有一级子目录文件夹大小 并排序
选项 | 含义 |
---|---|
-h | 目录的查看磁盘空间及使用情况 |
-s | 指定目录 |
-a | 含文件 |
–max-depth | 子目录深度 |
-c | 列出明细的同时,增加汇总值 |
分区命令
分区方式 | 主分区 | 最大支持容量 |
---|---|---|
mbr | 四个 系统只能安装在主分区,扩展分区要占一个主分区。 | 2TB,但拥有最好的兼容性。 |
gtp | 无限个 | 18EB(18 * 1024 * 1024 TB) |
Windows的磁盘分区:
Linux的磁盘分区:
第一:Linux 来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构 , Linux 中每个分区都是用来组成整个文件系统的一部分。
第二:Linux 采用了一种叫载入(挂载)的处理方法,它的整个文件系统中包含了一整套的文件和目录, 且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。
磁盘----------(mount挂载)------------->Linux文件系统
Linux文件系统----------(umount卸载)------------->磁盘
Linux磁盘 | 物理结构 | 驱动标识符 |
---|---|---|
IDE硬盘 | 并口针式 | hdx~ x代表盘号。a 为基本盘,b 为基本从属盘,c 为辅助主盘,d 为辅助从属盘 ~代表分区。主分区[1,4];逻辑分区[5,+) |
SCSI硬盘 | 串口 | sdx~ x代表盘号。a 为基本盘,b 为基本从属盘,c 为辅助主盘,d 为辅助从属盘 ~代表分区。主分区[1,4];逻辑分区[5,+) |
lsblk 查看分区挂载
lsblk 【选项】
lsblk -f;#查看所有分区挂载
#输出:
sda
├─sda1 ext4 54410f88-22dd-479e-a806-f0391648e604 /boot
└─sda2 swap dBaTHb-D8Ie-f4rc-uWfX-EsLY-Cou1-tzYJ3S [SWAP]
└─sda3 ext4 5ea5220f-4cb5-48bc-8031-f9310b2f0444 /
#解读:
sd代表Linux磁盘是SCSI硬盘
a代表基本盘
sda1,sda2,sda3代表3个分区
ext4,swap代表分区类型
/boot,/,[SWAP]代表挂载目录
fdisk 创建和维护分区
选项 | 含义 |
---|---|
内部指令 | 含义 |
---|---|
m | 内部指令帮助 |
n | 新增分区 |
d | 删除分区 |
w | 写入并退出 |
p | 分区类型为主分区 |
q | 不保存退出 |
mount 挂载文件
mount 【选项】 设备文件名 挂载点
#注:挂载点目录必须存在且为空
选项 | 含义 |
---|---|
-t 文件系统 | 文件系统 |
umount 卸载文件
umount 【选项】 设备文件名
选项 | 含义 |
---|---|
mkfs 格式化
swapon 查看所有交换分区
swapon -s 查看所有交换分区
选项 | 含义 |
---|---|
硬盘分区挂载案例
案例:给Linux系统增加一块硬盘,并挂载到 /home/newdisk。步骤如下
1)虚拟机添加硬盘,并重启Linux系统。
2)分区
fdisk /dev/sdb
m获取帮助
n新增分区
p分区类型为主分区
w写入分区并退出
3)格式化
mkfs -t ext4 /dev/sdb1
4)临时挂载
mkdir /home/newdisk 创建目录
mount /dev/sdb1 /home/newdisk 临时挂载
5)设置为永久挂载(当重启系统,仍然可以挂载到/home/newdisk)
编辑/etc/fstab,新增一行。
vim /etc/fstab
/dev/sdb1 /home/newdisk ext4 defaults 0 0
mount -a 自动挂载,修改立即生效
sudo
pv 物理卷
pv… | 用途 |
---|---|
create | 创建 |
remove | 删除 |
display | 显示 |
scan | 激活 |
change | 改变 |
创建:pv–>vg–>lv
删除:lv–>vg–>pv
vg 卷组
lv 逻辑卷
软件安装
https://www.cnblogs.com/LiuChunfu/p/8052890.html
RPM 软件包管理器
RPM需要下载软件包后安装,并且无法解决软件包的依赖关系。
rpm 【选项】【软件包】
rpm -ivh 已经存在的rpm包;安装rpm包
rpm -e mysql;删除mysql安装包
rpm -q mysql;查询mysql包是否安装
rpm -qa | grep mysql;查询所安装的所有mysql安装包
rpm -qi mysql;查询mysql安装包信息
rpm -ql mysql;查询mysql包的安装文件及安装路径
rpm -qf 文件全路径;查询文件属于哪个安装包
选项 | 含义 |
---|---|
-i | 安装rpm软件包 |
-e | 卸载rpm软件包。 如果其他包依赖于将要删除的包,卸载时会报错,如果确定要强制删除,则加上–nodeps参数。 |
-U | 更新rpm软件包 |
-q | 查询rpm软件包 |
-a | |
-v | 提示 |
-h | 进度条 |
YUM 软件包管理器
能够从指定服务器上自动下载rpm包并安装(rpm需要下载后安装),可以自动处理依赖性关系,并且一次性安装所有依赖的软件包。
使用yum的前提是必须能连外网。
yum 【选项】【软件包】
yum list mysql;查看mysql安装包
yum install mysql;下载并安装mysql
选项 | 含义 |
---|---|
list | 查看所有的安装包 |
install | 下载并安装 |
wget 从指定URL下载文件
wget 【选项】【URL】
URL支持HTTP,HTTPS,FTP。
下载wget:yum -y install wget
选项 | 含义 |
---|---|
-P 目录 | 指定下载保存的目录 |
-R 文件类型 | 指定忽略下载的文件类型 |
make 软件源码编译
make 【-f】【指定编译目标】
-f 指定Makefile文件,通常情况下,Makefile都保存在软件的源码目录下
make指令本身不执行代码编译工作,它是根据Makefile文件调用gcc指令完成代码的编译工作
步骤
./configure 配置
make 编译
make install 安装
gcc
选项 | 含义 |
---|---|
centos升级gcc到4.8.1(支持c ++ 11)步骤
下载gcc最新版
wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.1/gcc-4.8.1.tar.gz
然后解压到文件夹
tar -xvzf gcc-4.8.1.tar.gz
进入解压缩之后的目录
cd gcc-4.8.1
然后执行下面的运行
./contrib/download_prerequisites
再返回上一层,建立build_gcc_4.8.1
目录,这个目录和gcc-4.8.1平行
cd ..
mkdir build_gcc_4.8.1
进入刚建立的目录,并执行编译过程
cd build_gcc_4.8.1
../gcc-4.8.1/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
make -j23
make install
OK,在build_gcc_4.8.1中将gcc已经安装完成
确定新安装的GCC的路径,在安装时记下最后mv时的路径即可,例如:重置安在了/usr/local/bin
ls /usr/local/bin | grep gcc
执行
/usr/sbin/update-alternatives --install /usr/bin/gcc gcc /usr/local/bin/x86_64-unknown-linux-gnu-gcc-4.8.1 40
gcc --version #查看版本
/usr/sbin/update-alternatives --install /usr/bin/g++ g++ /usr/local/bin/g++ 40
g++ --version #查看版本
时间日期
date 显示修改时间
date;显示时间
date -s 时间;修改时间。
cal 日历
抓包及回放包
tcpdump数据包捕获
tcpdump [参数] [过滤]
参数 | 含义 |
---|---|
-a | 将网络地址和广播地址转变成名字 |
-A | 以ASCII格式打印出所有分组,并将链路层的头最小化。 |
-b | 在数据-链路层上选择协议,包括ip、arp、rarp、ipx都是这一层的。 |
-c | 抓取指定数量的数据包 |
-C | 在将一个原始分组写入文件之前,检查文件当前的大小是否超过了参数file_size 中指定的大小。如果超过了指定大小,则关闭当前文件,然后在打开一个新的文件。参数 file_size 的单位是兆字节(是1,000,000字节,而不是1,048,576字节)。 |
-d | 将匹配信息包的代码以人们能够理解的汇编格式给出。 |
-dd | 将匹配信息包的代码以C语言程序段的格式给出。 |
-ddd | 将匹配信息包的代码以十进制的形式给出。 |
-D | 打印出系统中所有可以用tcpdump截包的网络接口。 |
-e | 显示以太网帧头部信息 |
-E | 用spi@ipaddr algo:secret解密那些以addr作为地址,并且包含了安全参数索引值spi的IPsec ESP分组。 |
-f | 将外部的Internet地址以数字的形式打印出来。 |
-F | 从指定的文件中读取表达式,忽略命令行中给出的表达式。 |
-i | 捕获特定网口数据包。如果为-i any表示抓取所有经过网卡数据包 |
-l | 使标准输出变为缓冲行形式,可以把数据导出到文件。 |
-L | 列出网络接口的已知数据链路。 |
-m | 从文件module中导入SMI MIB模块定义。该参数可以被使用多次,以导入多个MIB模块。 |
-M | 如果tcp报文中存在TCP-MD5选项,则需要用secret作为共享的验证码用于验证TCP-MD5选选项摘要(详情可参考RFC 2385)。 |
-n | 使用IP地址表示主机。使用数字表示端口 |
-nn | 不进行端口名称的转换。 |
-N | 不输出主机名中的域名部分。例如,‘nic.ddn.mil‘只输出’nic‘。 |
-O | 不运行分组分组匹配(packet-matching)代码优化程序。 |
-P | 不将网络接口设置成混杂模式。 |
-q | 快速输出。只输出较少的协议信息。 |
-r | 读取包(这些包一般通过-w选项产生)。 |
-S | 将tcp的序列号以绝对值形式输出,而不是相对值。-S 0 抓到完整的数据包 |
-s | 设置抓包时的抓包长度。-s 0抓取数据包时默认抓取长度为68字节。 |
-T | 将监听到的包直接解释为指定的类型的报文,常见的类型有rpc和snmp |
-t | 不打印时间戳 |
-tt | 在每一行中输出非格式化的时间戳。 |
-ttt | 输出本行和前面一行之间的时间差。 |
-tttt | 在每一行中输出由date处理的默认格式的时间戳。 |
-u | 输出未解码的NFS句柄。 |
-v | 输出诸如ip数据包中的TTL更加详细的信息 |
-vv | 输出详细的报文信息。 |
-x | 按照十六进制显示数据包内容 |
-X | 不仅仅输出-x结果还输出十六进制对应的ASCII字符 |
-w | 将输出结果定向到某个文件,一般为pcap后缀 |
Wireshark(以前是ethereal)是Windows下非常简单易用的抓包工具。Linux下抓包工具有Tcpdump。
我们可以用Tcpdump + Wireshark 的完美组合实现:在 Linux 里抓包,然后在Windows 里分析包。
tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
tcp: ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的dst port ! 22 : 不抓取目标端口是22的数据包
src net 192.168.1.0/24 : 数据包的源网络地址为192.168.1.0/24
协议过滤 | 执行命令 |
---|---|
tcpdump -i eth0 | |
捕获特定个数(1000)的包 | tcpdump -c 1000 -i eth0 |
将捕获的包保存到文件 | tcpdump -w a.pcap -i eth0 |
读取pcap格式的包 | tcpdump -r a.pcap |
增加捕获包的时间戳 | tcpdump -n -ttt -i eth0 |
指定捕获包的协议类型 | tcpdump -i eth0 arp |
捕获指定端口 | tcpdump -i eth0 post 22 |
捕获特定目标ip+port的包 | tcpdump -i eth0 dst address and port 22 |
捕获DNS请求和响应 | tcpdump -i eth0 -s0 port 53 |
匹配Http请求头 | tcpdump -s 0 -v -n -l | egrep -i “POST /|GET /|Host:” |
二:过滤
**协议过滤:**缺省值是监听所有协议的信息包。
- fddi
- ip
- arp
- rarp
- tcp
- udp
类型过滤:
- host(缺省类型): 指明一台主机,如host 210.27.48.2
- net: 指明一个网络地址,如net 202.0.0.0
- port: 指明端口号,如port 23
方向过滤:
- src src 210.27.48.2, IP包源地址是210.27.48.2
- dst dst net 202.0.0.0, 目标网络地址是202.0.0.0
- dst or src(缺省值)
- dst and src
逻辑运算:
- 非运算:not, !
- 与运算:and, &&
- 或运算:or, ||
其他过滤:gateway(网关), broadcast, less, greater
三:高级过滤
从包头过滤信息
proto[x:y] : 过滤从x字节开始的y字节数。比如ip[2:2]过滤出3、4字节(第一字节从0开始排)
proto[x:y] & z = 0 : proto[x:y]和z的与操作为0
proto[x:y] & z !=0 : proto[x:y]和z的与操作不为0
proto[x:y] & z = z : proto[x:y]和z的与操作为z
proto[x:y] = z : proto[x:y]等于z
四:输出信息
A,数据链路层头信息
使用命令: #tcpdump --e host ice
ice 是一台装有linux的主机,她的MAC地址是0:90:27:58:AF:1A
H219是一台装有SOLARIC的SUN工作站,它的MAC地址是8:0:20:79:5B:46;上一条命令的输出结果如下所示:
21:50:12.847509 eth0 < 8:0:20:79:5b:46 0:90:27:58:af:1a ip 60: h219.33357 > ice.telne
t 0:0(0) ack 22535 win 8760 (DF)
分析:21:50:12是显示的时间, 847509是ID号,eth0 <表示从网络接口eth0 接受该数据包,eth0>表示从网络接口设备发送数据包, 8:0:20:79:5b:46是主机H219的MAC地址,它表明是从源地址H219发来的数据包.0:90:27:58:af:1a是主机ICE的MAC地址,表示该数据包的目的地址是ICE . ip 是表明该数据包是IP数据包,60是数据包的长度, h219.33357 > ice.telnet表明该数据包是从主机H219的33357端口发往主机ICE的TELNET(23)端口. ack 22535表明对序列号是222535的包进行响应. win 8760表明发送窗口的大小是8760.
B,ARP包的TCPDUMP输出信息
使用命令:#tcpdump arp
得到的输出结果是:
22:32:42.802509 eth0 > arp who-has route tell ice (0:90:27:58:af:1a)
22:32:42.802902 eth0 < arp reply route is-at 0:90:27:12:10:66 (0:90:27:58:af:1a)
分析: 22:32:42是时间戳, 802509是ID号, eth0 >表明从主机发出该数据包, arp表明是ARP请求包,who-has route tell ice表明是主机ICE请求主机ROUTE的MAC地址。0:90:27:58:af:1a是主机ICE的MAC地址。
C,TCP包的输出信息
用TCPDUMP捕获的TCP包的一般输出信息是:
src > dst: flags data-seqno ack window urgent options
src> dst:表明从源地址到目的地址, flags是TCP包中的标志信息,S 是SYN标志, F (FIN), P (PUSH) , R(RST) “.” (没有标记); data-seqno是数据包中的数据的顺序号, ack是下次期望的顺序号,window是接收缓存的窗口大小, urgent表明数据包中是否有紧急指针. Options是选项.
D,UDP包的输出信息
用TCPDUMP捕获的UDP包的一般输出信息是:
route.port1 > ice.port2: udp lenth
UDP十分简单,上面的输出行表明从主机ROUTE的port1端口发出的一个UDP数据包到主机ICE的port2端口,类型是UDP, 包的长度是lenth
- 辅助工具
(1) 想查看TCP或者UDP端口使用情况,使用 netstat -anp
如果有些进程看不见,如只显示”-”,可以尝试
sudo netstat -anp
如果想看某个端口的信息,使用lsof命令,如:
sudo lsof -i :631
-bash-3.00# netstat -tln
netstat -tln 命令是用来查看linux的端口使用情况
/etc/init.d/vsftp start 是用来启动ftp端口~!
看文件/etc/services
netstat
查看已经连接的服务端口(ESTABLISHED)
netstat -a
查看所有的服务端口(LISTEN,ESTABLISHED)
sudo netstat -ap
查看所有 的服务端口并显示对应的服务程序名
nmap <扫描类型><扫描参数>
例如:
nmap localhost
nmap -p 1024-65535 localhost
nmap -PT 192.168.1.127-245
当我们使用 netstat -apn 查看网络连接的时候,会发现很多类似下面的内容:
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 52 218.104.81.152:7710 211.100.39.250:29488 ESTABLISHED 6111/1
显示这台服务器开放了7710端口,那么 这个端口属于哪个程序呢?我们可以使用 lsof -i :7710 命令来查询:
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
sshd 1990 root 3u IPv4 4836 TCP *:7710 (LISTEN)
这样,我们就知道了7710端口是属于sshd程序的。
(2) 运行tcpdump命令出现错误信息排除
tcpdump: no suitable device found
tcpdump: no devices found /dev/bpf4: A file or directory in the path name does not exist.
解决方案 2种原因:
1.权限不够,一般不经过处理,只用root用户能使用tcpdump
2.缺省只能同时使用4个tcpdump,如用完,则报此类错。需要停掉多余的tcpdump
(a) 截获网络中某台主机所有收到的和发出的所有的数据包:
# tcpdump host 192.168.13.209
(b) 截获主机192.168.13.210和主机172.22.64.39或192.168.13.209的通信:
# tcpdump host 192.168.13.210 and ( 172.22.64.39 or 192.168.13.209 )
(c) 截获主机192.168.13.210除了和主机172.22.64.39之外所有主机通信的数据包:
# tcpdump -n host 192.168.13.210 and ! 172.22.64.39
(d) 截获主机192.168.13.210发送的所有数据:
# tcpdump -i eth0 src host 192.168.13.210 (注意数据流向)
(e) 截获主机192.168.13.210接收的所有数据:
# tcpdump -i eth0 dst host 192.168.13.210
(f) 截获主机192.168.13.210所有在TCP 80端口的数据包:
# tcpdump -i eth0 host 192.168.13.210 and tcp port 80
(g) 截获HTTP主机192.168.13.210在80端口接收到的数据包:
# tcpdump -vvvnns 1500 -i eth0 host 192.168.13.210 and dst port 80 -w /tmp/tcpdump_80_recv
(h) 截获HTTP主机192.168.13.209在80端口响应主机192.168.13.210的数据包:
# tcpdump -vvvnns 1500 -i eth0 host 192.168.13.209 and 192.168.13.210 and src port 80 -w /tmp/tcpdump_80_sent
A想要截获所有210.27.48.1 的主机收到的和发出的所有的数据包:
#tcpdump host 210.27.48.1
B想要截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信,使用命令:(在命令行中使用括号时,一定要添加'')
#tcpdump host 210.27.48.1 and (210.27.48.2 or 210.27.48.3 )
C如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:
#tcpdump ip host 210.27.48.1 and ! 210.27.48.2
D如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令:
#tcpdump tcp port 23 host 210.27.48.1
E 对本机的udp 123 端口进行监视 123 为ntp的服务端口
#tcpdump udp port 123
F 系统将只对名为hostname的主机的通信数据包进行监视。主机名可以是本地主机,也可以是网络上的任何一台计算机。下面的命令可以读取主机hostname发送的所有数据:
#tcpdump -i eth0 src host hostname
G 下面的命令可以监视所有送到主机hostname的数据包:
#tcpdump -i eth0 dst host hostname
H 我们还可以监视通过指定网关的数据包:
#tcpdump -i eth0 gateway Gatewayname
I 如果你还想监视编址到指定端口的TCP或UDP数据包,那么执行以下命令:
#tcpdump -i eth0 host hostname and port 80
J 如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:
#tcpdump ip host 210.27.48.1 and ! 210.27.48.2
K 想要截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信,使用命令:
#tcpdump host 210.27.48.1 and (210.27.48.2 or 210.27.48.3 )
L 如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:
#tcpdump ip host 210.27.48.1 and ! 210.27.48.2
M 如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令:
#tcpdump tcp port 23 host 210.27.48.1
tcpreplay回放包
Tcpreplay是一种pcap包的重放工具, 它可以将tcpdump和Ethereal/Wireshark等工具捕捉到的网络流量包进行编辑修改和重放. 重写Layer 2、3、4层数据包,并将流量重新发送至目标网络, 这样通过重放网络流量包从而实现复现问题情景以定位bug
tcpreplay本身包含了几个辅助工具(tcpprep、tcprewrite、tcpreplay和tcpbridge等等)
tcpreplay:以任意速度将pcap文件重播到网络上
tcprewrite:编辑pcap文件并创建一个新的pcap文件
tcpreplay-edit:编辑pcap文件并重放到网络上
tcpprep:创建tcpreplay / tcprewrite使用的客户端/服务器定义缓存文件
tcpbridge:使用tcprewrite的功能桥接两个网段
tcpliveplay:以服务器识别的方式重放TCP pcap文件
tcpcapinfo:raw pcap文件解码器和调试器
tcpprep - 简单的说就是划分哪些包是client的, 哪些是server的, 一会发包的时候client的包从一个网卡发, server的包可能从另一个网卡发。即区分pcap数据包的流向,即区分出客户端和服务器。
tcprewrite - 简单的说就是修改2层, 3层, 4层报文头部。即改写pcap数据包的2-4层的头部信息,即MAC地址、IP地址和PORT等。
tcpreplay - 真正发包, 可以选择主、从网卡, 发包速度等。即回放pcap文件中的数据包。
tcpreplay-edit-更写pcap数据并回放,将tcprewrite和tcpreplat一条命令实现。
tcpbridge - bridge two network segments with the power of tcprewrite。
软件安装
Libpcap安装(在安装tcpreplay之前安装,否则./configure的时候你会得到提示说libpcap库没有安装)
1、 下载
http://www.tcpdump.org
2、 解压
tar zxvf libpcap-1.3.0.tar.gz
3、 配置
cd libpcap-1.3.0
./configure
4、编译
make
make install
tcpreplay安装
1、 下载
http://tcpreplay.synfin.net/trac/wiki/Download
2、 解压
tar zxvf tcpreplay-3.4.4.tar.gz
3、 配置
cd tcpreplay-3.4.4
./autogen.sh
./configure
4、编译
make
make test
make install
使用
a. 将回放的包,放入系统(192.168.2.251)中,建一个tcpreplay的文夹,存放所有的与此相关的文件;使用端口eth1回放流量:tcpreplay -i eth1 sip.pcap
b. 可以用工具:Wireshark打开加放的包。查看包的个数,及分类;
c. 当包回放完毕后,可以通过流量监控系统中的:流记录查看,查看到回放的包数;然后与Wiresharkk 中查看到的,做一个对比;
d. tcpreplay –h 命令进行查看,附录部分也给出了部分常用的,可以参考。
e. tcpreplay发包:-l参数是说循环多少次,注意这个次数是对一个trace而言的,-p参数是说每秒发多少个包,-i是说从那个网卡发
tcpreplay -l 5 -p 10 -i eth0 testout.pcap
每秒发送10个,循环5次,假设源trace有50个数据包,那么整个发完应该是一共发送了250个数据包,大概25秒发完
参数
1)以不同的速度回放
1)以尽可能大的速度回放
tcpreplay --topspeed --intf1=eth0 sample.pcap
2)以10Mbps速率回放
tcpreplay --mbps=10.0 --intf1=eth0 sample.pcap
3)以原速度的7.3倍速率回放
tcpreplay --multiplier=7.3 --intf1=eth0 sample.pcap
4)以原速度的0.5倍速率回放
tcpreplay --multiplier=0.5 --intf1=eth0 sample.pcap
5)以每秒回放25个包的速率回放
tcpreplay --pps=25 --intf1=eth0 sample.pcap
6)以一次一个包的速率发送数据包(debug时很有用)
tcpreplay --oneatatime --verbose --intf1=eth0 sample.pcap
2)循环播放数据包
1)重放10次
tcpreplay --loop10 --intf1=eth0 sample.pcap
简写:tcpreplay -l 10 -i eth0 sample.pcap
2)无限循环重放,直到Ctrl+C结束
tcpreplay --loop=0 --intf1=eth0 sample.pcap
简写:tcpreplay -l 0 -i eth0 sample.pcap
3)两个网口之间重放数据包
1)可以利用tcpprep将数据包通信双方区分为客户端和服务器端,这样在eth0和eth1之间通信就相当于是客户端和服务器。
tcpreplay --cachefile=sample.prep --intf1=eth0 --intf2=eth1 sample.pcap
说明:cachefile为由tcpprep生成,会在下面的tcpgrep部分介绍具体用法
2)如果已经将数据包分成两个文件,那么tcpreplay就可以用如下的命令在两个网口之间进行数据的重放。
tcpreplay --dualfile --intf1=eth0 --intf2=eth1 side-a.pcap side-b.pcap
- 想要截获所有210.27.48.1 的主机收到的和发出的所有的分组:
#tcpdump host 210.27.48.1
(2) 想要截获主机210.27.48.1 和主机210.27.48.2或210.27.48.3的通信,使用命令(注意:括号前的反斜杠是必须的):
#tcpdump host 210.27.48.1 and 210.27.48.2 or 210.27.48.3
(3) 如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:
#tcpdump ip host 210.27.48.1 and ! 210.27.48.2
(4) 如果想要获取主机192.168.228.246接收或发出的ssh包,并且不转换主机名使用如下命令:
#tcpdump -nn -n src host 192.168.228.246 and port 22 and tcp
(5) 获取主机192.168.228.246接收或发出的ssh包,并把mac地址也一同显示:
tcpdump -e src host 192.168.228.246 and port 22 and tcp -n -nn
(6) 过滤的是源主机为192.168.0.1与目的网络为192.168.0.0的报头:
tcpdump src host 192.168.0.1 and dst net 192.168.0.0/24
(7) 过滤源主机物理地址为XXX的报头:
tcpdump ether src 00:50:04:BA:9B and dst……
(为什么ether src后面没有host或者net?物理地址当然不可能有网络喽)。
(8) 过滤源主机192.168.0.1和目的端口不是telnet的报头,并导入到tes.t.txt文件中:
Tcpdump src host 192.168.0.1 and dst port not telnet -l > test.txt
ip icmp arp rarp 和 tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型。
tcpdump采用命令行方式,它的命令格式为:
tcpdump [-nn] [-i 接口] [-w 储存档名] [-c 次数] [-Ae]
[-qX] [-r 文件] [所欲捕获的数据内容]
参数:
-nn,直接以 IP 及 Port Number 显示,而非主机名与服务名称。
-i,后面接要「监听」的网络接口,例如 eth0, lo, ppp0 等等的接口。
-w,如果你要将监听所得的数据包数据储存下来,用这个参数就对了。后面接文件名。
-c,监听的数据包数,如果没有这个参数, tcpdump 会持续不断的监听,
直到用户输入 [ctrl]-c 为止。
-A,数据包的内容以 ASCII 显示,通常用来捉取 WWW 的网页数据包资料。
-e,使用资料连接层 (OSI 第二层) 的 MAC 数据包数据来显示。
-q,仅列出较为简短的数据包信息,每一行的内容比较精简。
-X,可以列出十六进制 (hex) 以及 ASCII 的数据包内容,对于监听数据包内容很有用。
-r,从后面接的文件将数据包数据读出来。那个「文件」是已经存在的文件,
并且这个「文件」是由 -w 所制作出来的。
所欲捕获的数据内容:我们可以专门针对某些通信协议或者是 IP 来源进行数据包捕获。
那就可以简化输出的结果,并取得最有用的信息。常见的表示方法有。
‘host foo’, ‘host 127.0.0.1’ :针对单台主机来进行数据包捕获。
‘net 192.168’ :针对某个网段来进行数据包的捕获。
‘src host 127.0.0.1’ ‘dst net 192.168’:同时加上来源(src)或目标(dst)限制。
‘tcp port 21’:还可以针对通信协议检测,如tcp、udp、arp、ether 等。
除了这三种类型的关键字之外,其他重要的关键字如下:gateway, broadcast,less,
greater,还有三种逻辑运算,取非运算是 ‘not ’ ‘! ‘, 与运算是’and’,’&&’;或运算 是’o
r’ ,‘||’;
附录:tcpreplay参数说明
此部分也可以直接参看tcpreplay –h ,此处只列出本人认为实用性比较强的。
-i, --intf1=str 服务器/初始数据输出口
-I, --intf2=str 客户端/第二个数据流输出口
-L, --limit=num 限制发包数目
-l, --loop=num 定义trace循环次数
-x, --multiplier=str 修改发包速度,str为原速度的倍数
-M, --mbps=str 以给定的Mbps速度发包
-t, --topspeed 尽快的速度发包
-o, --oneatatime 一次发送一个包
-p, --pps-multi=num 每秒发送的数据包数
Tcprewrite 和 tcpprep
这两个用得少,Tcprewrite主要是用于修改端口、IP等;
Tcpprep 主要是用于将pacp包转换成cach包,现在回放不用转,直接用pacp包可以回放;
跳板机
RDO
可视化软件
VNC
Xmanager
Java调试命令
jmap
Shell脚本编程
Shell是一个命令解释器,他为用户提供一个向Linux内核发送请求的程序。
格式
脚本以#!/bin/bash 开头
启动脚本方式
方式 | 特点 |
---|---|
路径启动 | /a/b/c/xx.sh ./xx.sh 注:脚本需要有可执行权限。即X权限。 |
sh启动 | sh xx.sh 注:脚本可以没有可执行权限。 |
注释
注释 | 形式 |
---|---|
单行 | # |
多行 | :<<! 内容 ! |
变量
Linux变量环境变量,系统变量和用户自定义变量。
环境变量
环境变量 | 特点 |
---|---|
$HOME | 用户home目录的路径 |
$PWD | 用户密码路径 |
$SHELL | shell路径 |
$USER | |
$PATH | 命令搜索路径 |
$EDITOR | 默认行编辑器 |
$LOGNAME | 用户登录名 |
$IFS | 设置shell分隔符,默认是空格,制表符,换行符。 |
$HISTFILE | 历史文件 |
$PS1 | 主命令提示符 |
$PS2 | 二级命令提示符 命令执行过程中要求输入数据时使用 |
$PS3 | select命令提示符 |
$PS4 | 调试命令提示符 |
系统变量
查看当前shell中所有变量:set
变量 | 特点 |
---|---|
$n | $0代表命令自身 $1~ 9 代表第一到第九个参数 < b r / > 9代表第一到第九个参数<br /> 9代表第一到第九个参数<br/>{n}十以上的参数用{}包起来 |
$* | 命令行中所有参数,把所有参数看成一个整体。 |
$@ | 命令行中所有参数,把每个参数区别对待。 |
$# | 命令行中所有参数的个数 |
$$ | 当前进程号PID |
$! | 上一个进程号PID |
$? | 前一个命令或函数的返回码。 0表示成功,非0表示失败 |
获取命令行的参数信息。
./xxx.sh 3 6 9
$0 代表xxx.sh脚本
$1 代表3
$2 代表6
$3 代表9
$* 代表"3 6 9"
$@ 代表"3" "6" "9"
$# 代表所有参数的个数,即3个
用户自定义变量
变量 | 特点 |
---|---|
$ | 输出,引用变量 |
unset | 清除变量。但是不能清除静态变量 |
readonly | 静态只读变量 |
export | 环境变量 |
全局环境变量 | |
local | 本地变量 |
1)定义并设置环境变量
export 环境变量名=值
2)让修改后的配置信息立即生效
source 配置文件
变量命名规则
1)变量名称可以由字母、数字和下划线组成,但是不能以数字开头。
2)变量名称一般习惯为大写
变量赋值
1)直接赋值
变量名='值'
2)将命令的返回值赋给变量
变量名="命令"
3)将命令的返回值赋给变量
变量名=$(命令)
注:
1)等号两侧不能有空格
2)当值中有空格时,需要引号包起来。
3)单引号原型输出,双引号命令执行
read 读取控制台输入
read 【选项】
选项 | 用途 |
---|---|
-p | 指定控制台输入时提示符 |
-t | 指定读取时等待时间,过时不候。 |
echo 输出
基本重定向 | 内联重定向 | |
---|---|---|
输入 | 命令 < 文件 | 命令 <<文件 |
输出 | 命令 > 文件 覆盖 | 命令 >> 文件 追加 |
算数运算
方式一:$((运算式))
注:这个运算符只能是基本的符号运算式(+,-,*,/...),不能是英文运算式(-gt,-ge,-eq)
方式二:$[运算式]
方式三:expr
expr m+n 加
expr m-n 减
expr m*n 乘
expr m/n 除
expr m%n 取余
#!/bin/bash
A=5
B=6
C=$((($A + 5) * $B))
D=$[($A + 5) * $B]
E=`expr $A + 5`
E=`expr $E * $B`
echo "$C"
echo "$D"
echo "$E"
注:推荐使用第二种方式
流程控制
条件判断式
数值
n1 XXX n2 | 含义 |
---|---|
-eq | 等于 |
-ge | 大于等于 |
-gt | 大于 |
-le | 小于等于 |
-lt | 小于 |
-ne | 不等于 |
字符串
str1 XXX str2 | 含义 |
---|---|
= | 等于 |
>= | 大于等于 |
> | 大于 |
<= | 小于等于 |
< | 小于 |
-n | 长度是否非0 |
-z | 长度是否为0 |
注:
1)> < 得进行转义,否则shell会把它当成重定向符号,而把字符串值当做文件名进行重定向操作。
2)> < 与sort命令结构可能不同,sort认为小写字母大于大写字母,> < 则认为小写字母小于大写字母
文件权限
文件权限 | 含义 |
---|---|
-r 文件 | 有读的权限 |
-w 文件 | 有写的权限 |
-x 文件 | 有执行的权限 |
文件类型
文件权限 | 含义 |
---|---|
-f 文件 | 文件存在并且是一个常规的文件 |
-e 文件 | 文件存在 |
-d 文件 | 文件存在并是一个目录 |
-s 文件 | 是否存在且为空 |
文件时间
file1 XXX file2 | 含义 |
---|---|
-nt | 新 |
-ot | 旧 |
if
if [ 条件判断式 ] ;then
程序
elif [ 条件判断式 ] ;then
程序
fi
if [ 条件判断式 ] ;then
程序
else
程序
注: [ 条件判断式 ]中必须有空格
case
case $变量名 in
"值 1")
如果变量的值等于值 1,则执行程序 1
;;
"值 2")
如果变量的值等于值 2,则执行程序 2
;;
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
for
方式一:
for 变量 in 值1 值2 值3…
do
程序
done
方式二:
for 变量 in "$*"
do
程序
done
方式三:
for 变量 in "$@"
do
程序
done
方式四:
for (( 初始值;循环控制条件;变量变化))
do
程序
done
注:
1)break跳出此次循环
2)continue跳出所有循环
while
while [ 条件判断式 ]
do
程序
done
注: [ 条件判断式 ]中必须有空格
注:
1)break跳出此次循环
2)continue跳出所有循环
自定义函数
function 函数名(){
代码;
【return 返回值;】
}
调用方式:函数名 【参数值】
示例:计算输入的两个参数之和
#!/bin/bash
function getSum(){
SUM=$[ $n1+$n2 ]
echo "和是$SUM"
}
read -p "请输入第一个数n1:" n1
read -p "请输入第二个数n2:" n2
getSum $n1 $n2
注:如果将某段代码封装成函数,如果不调用此函数,就相当于把这段代码注释。
最后
以上就是迅速冰淇淋为你收集整理的Linux环境搭建根目录命令Shell脚本编程的全部内容,希望文章能够帮你解决Linux环境搭建根目录命令Shell脚本编程所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复