linux
1.1目录
/bin:是Binary的缩写,这个目录存放着系统必备执行命令
/boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件,自己的安装别放这里
/dev:Device(设备)的缩写,该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
/etc:所有的系统管理所需要的配置文件和子目录。
/home:存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
/lib:系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
/lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
/misc: 该目录可以用来存放杂项文件或目录,即那些用途或含义不明确的文件或目录可以存放在该目录下。
/mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
/net 存放着和网络相关的一些文件.
/opt:这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
/root:该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
/selinux:这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙
/srv:service缩写,该目录存放一些服务启动之后需要提取的数据。
/sys: 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
/tmp:这个目录是用来存放一些临时文件的。
/usr: 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录。
/var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
1.2基础知识
1.2.1硬盘分区
建立分区时遵循的顺序 建立主分区(至少有一个)->建立扩展分区(最多只有一个)->建立逻辑分区(若干个)->激活主分区->格式化所有分区
硬盘容量=主分区容量+扩展分区的容量
扩展分区容量=若干个逻辑分区的容量总数
主分区+若干逻辑分区=驱动器/卷(逻辑磁盘)
1.2.2文件系统
linux(一切都是文件,所以一切东西都是给文件系统保管)
tree / -L数字(第几层):查看文件树
/etc #存放一些关于系统,管理相关用户文件
/boot #存放系统启动时需要的文件
/home #用户目录
/lib #存放共享连接库
/proc #存放系统进程,核心程序的信息
/root #root用户的主目录
/sbin #存放启动的一些命令(root常用)
/tmp #用户存放的临时文件
/usr #里面还有很多子目录,存放程序
/var #里面存放了系统日志,web日志,数据库日志,web源代码,邮箱
绝对,相对路径:/var/www/html/6.php(绝对)…/(相对)
touch:创建文件
echo ’XX‘ >> 6.php :将xx写入6.php
文件类型:普通文件,目录文件,链接文件(快捷方式),设备文件(/dev)
挂载:
/
/boot
swap :交换分区·,临时,虚拟)
XFS:日志文件系统 (高容量磁盘,大文件,最大16TB,centos7+),在之前使用的是EXT4
1.2.3.inode节点与块
硬盘存储最小单位:sector(512字节=0.5KB)
8个扇区=一个块(block):4KB
inode内容:
1)元数据:文件大小,文件操作权限,时间戳,放文件数据的块位置,链接数
2)数据块:文件内容,目录信息
inode大小:512KB
df -i (当前inode信息)
ls -i (inode值)
ls -li(换行显示)
1.2.4对Linux简化系统服务
systemctl stop firewalld #关闭防火墙
iptables -F #清除防火墙规则
setenforce 0 #关闭selinux防火墙
systemctl status 服务状态 #查看服务的系统状态
systemctl status firewalld 服务状态 #查看防火墙状态
sestatus #selinux防火墙状态
1.2.5.init&systemd
centos6用的init服务机制
/etc/init.d/nginx start
/etc/init.d/nginx stop
mysqld httpd
systemd进程代替init进程
ps -ef #进程信息
1.2.6系统服务控制
语法结构:
systemctl
start
stop
systemd的常见单元类型:
12种实体单元类型:
- 服务单元(service units):启动和控制 daemons 等进程,更多信息 man 5 systemd.service
- 套接字单元(socket units):封装本地在系统内等 IPC 或网络 socket,基于网络点激活,man 5 systemd.socket, man 7 daemon
- 目标单元(target units):用于对单元分组,或启动阶段更好同步点,man 5 systemd.target
- 设备单元(device units):基于设备点激活,内核使用的设备,man 5 systemd.device
- 挂载单元(mount units):控制在文件系统内的挂载点,man 5 systemd.mount
- 自动挂载单元(automount units):提供自动挂载能力,并行启动阶段文件系统挂载,man 5 systemd.automount
- 快照单元(snapshot units):可用来临时对实体单元集合对状态进行临时保存,之后可以从保存快照单元中恢复,man 5 systemd.snapshot
- 定时器单元(timer units):基于定时器来触发其他单元对激活,man 5 systemd.timer
- 交换单元(swap units):与挂载单元类型,封装了文件系统内存交换分区相关对象,man 5 systemd.swap
- 路径单元(path units):用来当文件系统的对象改变或被修改时,激活其他服务,man 5 systemd.path
- 切片单元(slice units):用于资源管理的目的来对单元进行分组,管理系统进程(如:服务单元、范围单元)在层次化树中,man 5 systemd.slice
- 范围单元(scope units):与服务单元类似,但是用来管理外部进程,而不是启动他们,man 5 systemd.scope
apache启动,停止,重启:
service httpd start #启动
service httpd restart #重新启动
service httpd stop #停止服务
systemctl list-unit-files | grep httpd #查询是否开机自启
systemctl enable httpd #开机自启
systemctl list-unit-files #查看启动项
systemctl list-unit-files | grep enable #过滤查询
runlevel 查看当前等级
/etc/systemd/multi-user.target.wants/ #所有开机自启服务的软连接存放
linux操作
1.shell
/bin/sh
/bin/bash
/bin/zsh
/bin/tcsh
/bin/csh
shell 脚本语言:
2.内核:
1).设备系统
2).文件系统
3).进程系统
4).内存系统
5).网络系统
1.3基础命令
1.3.1压缩
gzip,bzip2,tar(c,x)
相对应的解压方式
*.tar #tar -xvf
*.gz #gzip -d gunzip
*.tar.gz #tar -xzf
*.bz2 #bzip bunzip2
*.rar #unrar -e
*.zip #unzip
1.3.2vim编辑
插入内容光标编辑文件:a,i
退出编辑模式:esc
删除键:backspace
操作键::
保存:w
退出:q
h,j,k,l:左下上右
ctrl+f #翻页(上移)
ctrl+b #翻页(下移)
H:移动光标到最上方
M:移动光标到中间
K:移动光标到最下方
在一行中,将光标移动到行首行尾:
0
$
dd:删除本行
ndd:往下删除n行
yy:复制本行
nyy:向下复制n行
u:撤销
ctrl+r:重做上一步
/字符串 查找字符串向下
?字符串 查找字符串向上
1.3.3linux应用程序
1)bin(用户指令) sbin(root/超级用户)
/bin
/var
/home
已安装rpm包的常见查询指令:
rpm -qa #查询已安装的rpm包
rpm -ql rpm包名 #查看该rpm包的相关安装路径
rpm -qi #查看该rpm包的详细信息
rpm -qd #查看该rpm包的文档安装位置
rpm -qR #查看该rpm包依赖的软件包和文件等
未安装rpm包的常见查询指令:
rpm ——qp($)#功能和上面一样,然后参数也和上面一样,就是中间加上一个p,然后后面指定的一定是一个未安装好的rpm包
编译安装源码
1)解压tar zxf
2)配置 ./configure --prefix=安装apache
3)编译 make
4)安装make install
5)开启web服务:apachectl start
访问本机ip,发现成功开启了web服务
1.3.4账号权限
id
uid
gid
1.4卷
1.4.1物理卷&卷组&逻辑卷
物理卷(PV,Physical Volumes)对应的是硬件存储,是磁盘或者磁盘分区,是物理存在。而卷组(VG,Volume Group)和逻辑卷(LV,Logical Volumes)则是逻辑上的存在。
卷组是由一到多个物理卷组成的,他可以划分成一到多个逻辑卷。
LE,Logical Extent,字面上是逻辑区,是逻辑卷最小的存储单位,个人为了方便理解,常说做逻辑块,实际上是逻辑区域。
PE,Physical Extent,物理区,是物理卷区域,是物理卷最小的存储单位,可以在创建物理卷时,指定大小,但是指定之后,就不可以在更改,除非删除物理卷,重新创建,当然,内容也会被删除。
创建分区
创建交换分区的命令:mkswap
启用:swapon
swapon [OPTION] [DEVICE]
-a:定义在/etc/fstab文件中的所有swap设备;
禁用:swapoff
swapoff DEVICE
mkfs命令
fdisk命令
1.4.2挂载
fstab文件
mount #挂载
umount #移除
1.4.3配额
qiota -u 用户名
qiota -g 组名
xfs_quota -x -c “limit bsoft=100M bhard=120M zhangsan“ /mailbox
xfs_quota -x -c “limit bsoft=N bhard=N 用户名“ 挂载点
touch text{1…4}.txt #创建4个文件
dd if=/dev/zero of=1.txt bs=50M count=1
ps命令:查看进程
ps aux --sort==res #内存占用量排序
ps aux --sort==%cpu #cpu占用量排序
top命令:
pgrep命令:根据特定条件查询进程pid信息
pstree命令:树状查看
cp /xx/xx /xx/xx.xx &
在命令行后加入&后台运行
ctrl+z 拉入后台运行
jobs #查看后台启动进程
fg (bg)#恢复至前台
ctrl+c 中断正在执行的命令
kill,killall命令
pkill命令
at命令
crontab命令
1.5服务
1.5.1软件安装&升级&卸载
安装软件
yum install [软件名]
yum groupinstall <包组名>
升级软件
yum update
yum groupupdate
卸载软件
yum remove <软件名>…
yum groupremove <包组名>…
1.5.2ftp
hostname #更改名称
查看路由表条目 route
netstat [选项] #查看系统的网络连接状态,路由表,接口统计等信息
-a -n -p -t -u -r
netstat -anpt | grep “:80”
traceroute 目标主机地址 #测试当前主机到目的主机之间经过的网络节点
nslookup 目标主机地址 [dns服务器地址] #测试dns域名解析
设置网络接口的ip地址,子网掩码
ifconfig 接口名 ip地址 [netmask 子网掩码]
ifconfig 网络接口 ip地址 [/掩码长度]
禁用或者重新激活网卡
ifconfig 网络接口 up
ifconfig 网络接口 down
设置虚拟网络接口
ifconfig 接口名:序号 ip地址
route add -net 网段地址 gw IP地址 #添加到指定网段的路由记录
route del -net 网段地址 #删除到指定网段的路由记录
route del default gw IP地址 #删除路由表中的默认网关记录
route add default gw IP地址 #向路由表中添加默认网关记录
vi /esc/sysconfig/network-scripts/ #网络接口配置文件
hosts文件和dns服务器的比较:
1)默认情况下,系统首先从hosts文件查找解析记录
2)hosts文件只对当前的主机有效
3)hosts文件可减少dns查询过程,从而加快访问速度
1.5.3dhcp服务
subent网段声明,作用于整个子网地址
range参数:设置用于分配的ip地址池
option subnet-mask 参数:设置客户机的子网掩码
option routers 参数:设置客户机的默认网关地址
host 主机声明,作用于单个主机
hardware ethernet 参数:指定对应主机的mac地址
fixed-address 参数:指定为该主机保留的ip地址
1.5.4dns系统
正向解析
反向解析
缓存域名服务器
主域名服务器
从域名服务器
1.5.5ssh
ssh协议
openssh
1.6smb
1.6.1ssh构建密钥
由客户端的用户在本地创建密钥对
导入到服务端用户的公钥数据库
1.smb
smb协议linux
server message block ,服务消息块
cifs协议
common internet file system ,通用互联网文件系统
samba项目
http://www.samba.org
samba服务器的主要程序
smbd:提供对服务器中文件,打印资源的的共享访问
nmbd:提供基于netbios主机名称的解析
samba的配置目录及文件
/etc/samba/
/etc/samba/smb.conf
配置文件检查工具:testparm
smb.conf文件的配置内容
辅助配置内容
注释行:以#号开头
配置行:以;开头
结合grep命令可以提取有效配置行
grep -v ”^#“ smb.conf | grep -v “^;” | grep -v ^$
常见全局配置项的含义
workgroup:所在工作组名称
server string:服务器描述信息
security:安全级别,可用值如下
share,user,server,domain
log file:日志文件位置,”%m“变量表示客户机地址
passwd backend:设置共享账户文件类型
常见共享目录配置项的含义
comment: 对共享目录的注释、说明信息
path:共享目录在服务器中对应的实际路径
browseable:该共享目录在“网上邻居”中是否可见
guest ok:是否允许所有人访可,等效于"public"
writable:是否可写,与read only的作用相反
1.6.2ftp
控制连接:tcp 21,用于发送tcp命令信息
数据连接:tcp20,用于上传,下载数据
数据连接的建立类型
主动模式:服务端从20端口主动向客户端发起连接
被动模式:服务端在指定范围内某个端口被动等待客户端连接
ftp传输模式
文本模式:ascii模式,以文本序列传输数据
二进制模式:binary模式,以二进制序列传输数据
1.7中间件
1.7.1apache虚拟主机的搭建
1.7.2nginx虚拟主机的搭建
1.7.3tomcat服务的搭建
1.7.4基于awstats的apache日志分析
第一步:安装EPEL-release
yum install epel-release -y
第 二 步:安装 Apache
yum install httpd -y
安装后启动:
systemctl start httpd
systemctl enable httpd
systemctl status httpd
第三步:安装awstats
yum install awstats -y
为 Apache 配置 awstats
AWStats 会生成一个默认的 Apache 配置文件/etc/httpd/conf.d/awstats.conf此文件允许
访问所有 IP 地址,但如果想从特定网络或 IP 地址访问 Awstats,就修改“允许来自”部分
此文件与您所需的网络 IP。进行更改后,使用以下命令重新启动 apache。
systemctl restart httpd
第四步:为网站创建awstats配置文件
为所需网站制作一个配置文件,以便我们检查其统计信息。也可以为每个网站制作单独
的文件。
使用以下命令使用自己的域名创建默认 AStats 配置文件的副本
cp/etc/awstats/awstats.localhost.localdomain.conf/etc/awstats/awstats.yourd
然后在“ awstats.yourdomain.com.conf ”文件中进行一些更改,使用以下命令对其进行编辑。
vim/etc/awstats/awstats.yourdomain.com.conf
并使用自己的域名修改此文件中的以下行
LogFile=”/var/log/httpd/yourdomain.com-access_log”
SiteDomain=”yourdomain.com”
HostAliases=”www.yourdomain.comlocalhost127.0.0.1”
现在保存对文件的更改并重新启动 apache。
systemctl restart httpd
使用以下命令从当前日志更新您的网站统计信息
注意:不要忘记将 -config=yourdomain.com 替换你自己的域名。
如果遇到日志文件错误,尝试新建.log文件再尝试。
mkdir/var/log/httpd/yourdomain.com-access_log
第五步:设置计划任务
设置一个 cron 作业,以在特定时间间隔内不断更新网站统计信息。例如,我们希望每
59 分钟更新一次网站统计信息,因此我们将使用以下命令配置 cron 作业。
crontab-e
*/59 * * * * root /usr/share/awstats/wwwroot/cgi-bin/awstats.pl-config=yourd
第六步:从Web浏览器访问Awstats
想查看您的网站统计信息,请使用以下链接,但不要忘记在该链接中使用我们自己的服
务器 IP 和域名
http://YOUR-SERVER-IP/awstats/awstats.pl?config=yourdomain.com
1.7.5基于awstats的nginx日志分析
一、编译nginx,加上参数 --with
http_stub_status_module
#查看是否安装Status模块
nginx -V 2>&1 | grep -o with-http_stub_status_module
#配置指令
./configure --prefix=/usr/local
–user=nginx
–group=nginx
–with-http_ssl_module
–with-http_realip_module
–http-client-body-temp-path=/usr/local/var/tmp/nginx/client
–http-proxy-temp-path=/usr/local/var/tmp/nginx/proxy
–http-fastcgi-temp-path=/usr/local/var/tmp/nginx/fcgi
–http-scgi-temp-path=/usr/local/var/tmp/nginx/scgi
–http-uwsgi-temp-path=/usr/local/var/tmp/nginx/uwsgi
–with-http_geoip_module
–with-http_stub_status_module
二、修改nginx配置文件,添加监控状态配置
在nginx.conf的server块中添加如下代码
location /status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
#auth_basic “NginxStatus”;
#auth_basic_user_file conf/nginxstaus;
}
三、访问信息
http://127.0.0.1/status,即可查看nginx的状态信息:
四、状态解释
1 在nginx 状态页面,可以看到几个数字,但是都是对应哪个参数呢?
2 Active connections – 活跃的连接数量
3 server accepts handled requests — 对应的是:连接数、成功创建的tcp握手、总请求数 三
4 上面的示例说明:总共处理了7个连接 , 成功创建7次握手, 总共处理了36个请求。
5 reading — 读取客户端的连接数。
6 writing — 响应数据到客户端的数量。
7 waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading+writing):
意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接。
通过这七个参数,就可以从连接到请求全方位的监控起 Nginx 的运行状态。