Linux笔记
什么是服务器
• 能够为其他计算机提供服务的更高级的电脑
典型服务模式
• C/S,Client/Server架构
– 由服务器提供资源或某种功能
– 客户机使用资源或功能TCP/IP协议简介 • TCP/IP是最广泛支持的通信协议集合– 包括大量Internet应用中的标准协议– 支持跨网络架构、跨操作系统平台的通信
网关地址(路由器):一个网络到另一个网络的关口-- 解决不同网络之间通信
获取命令行界面 • 虚拟控制台切换( Ctrl + Alt + Fn 组合键) – tty1:图形桌面– tty2~tty6:字符控制台
绿色:可以执行的程序 蓝色:目录 青色:快捷的方式 黑色:文本文件
执行Linux大多数命令,需要找到相对应的程序
– 命令的执行依赖于解释器(默认的解释器程序:/bin/bash)
用户 ------》解释器 ------》内核------》硬件
]# cat /etc/redhat-release 查看系统版本
]# lscpu 真机列出CPU处理器信息
]# cat /proc/meminfo 真机检查内存大小、空闲情况
]# hostname A.tedu.cn 临时设置主机名
]# ifconfig eth0 192.168.1.10 临时设置IP地址
]# ifdown eth0 禁用eth0网卡 ,让临时设置失效
]# ifup eth0 激活eth0网卡
]# head /etc/passwd 默认显示头10行 tail默认显示尾10行
]# mkdir -p /vod/movie/cartoon /-p表示连父目录一起创建
]# touch /root/1.txt 新建空文件
]# cat -n /etc/shells #显示行号 --help #查看命令的帮助信息
. . :上一级目录 . :当前目录 ~:用户家目录
快捷键
– Ctrl + l:清空整个屏幕 – Esc + . 或 Alt + .:粘贴上一个命令的参数 – Ctrl + u:清空至行首– Ctrl + w:往回删除一个单词
]# umount /dvd/ 卸载 Linux允许一个设备,同时挂载到多个不同的挂载点
ls — List 格式:ls [选项]... [目录或文件名]
• 常用命令选项
– -l:以长格式显示,显示详细属性
– -A:包括名称以 . 开头的隐藏文档
– -d:显示目录本身(而不是内容)的属性
– -h:提供易读的容量单位(K、M等)ls -R :递归显示目录内容所有
使用通配符
• 针对不确定的文档名称,以特殊字符表示
– *:任意多个任意字符
– ?:单个字符]# ls /root/a* #显示以a开头数据
[root@A /]# ls /dev/tty[0-6] [a-z]:多个字符或连续范围中的一个,若无则忽略
[root@A /]# ls /dev/tty{1,3,5,7,9,38} {a,min,xy}:多组不同的字符串,全匹配
]# unalias myls #删除别名
]# alias hn='hostname' #定义别名
]# alias #查看当前系统生效的别名
]# grep -i ROOT /etc/passwd 查找文本内容 -v,取反匹配 -i,忽略大小写
]# grep ^root /etc/passwd #以root开头的行 ^word 以字符串word开头
]# grep bash$ /etc/passwd #以bash结尾的行 word$ 以字符串word结尾]# rm -rf /opt/* -r、-f:递归删除(含目录)、强制删除
]# cp /etc/passwd /opt/ -r:递归,复制目录时必须有此选项
[root@A /]# \cp -r /boot/ /opt/ #没有提示信息,强制覆 复制时出现同名:临时在本次操作,取消别名的定义
复制可以支持两个以上的参数:永远会将最后一个参数,作为目标。其他的所有参数全部作为源。
管理用户和组
用户基本信息存放在 /etc/passwd 文件 用户密码信息存放在 /etc/shadow 文件
]# head -1 /etc/passwd
root:x:0:0:root:/root:/bin/bash
用户名:密码占位符:UID:基本组GID:用户描述信息:家目录:解释器程序useradd 命令
常用命令选项– -u 用户id、-d 家目录路径、-s 登录解释器、-G 附加组
创建的普通用户默认UID会从1000开始,管理员root的UID为0
]# useradd -u 1500 nsd04 #创建用户nsd04指定UID
]# id nsd01 查看用户的基本信息
]# groupadd stugrp 创建组
]# passwd nsd01 更改用户 nsd01 的密码 。
]# echo 123456 | passwd --stdin nsd01 非交互式设置密码
]# ls --help > /opt/ls.txt 重定向输出:将前面命令的输出,写入到文本文件>:覆盖重定向 >>:追加重定向
]# head -12 /etc/passwd | tail -5 | cat -n 显示文件/etc/passwd的8到12行内容
]# date 查看日期时间
]# date -s '2008-10-1 12:12:10' 修改时间
]# bc 计算器
修改用户属性
usermod [选项]... 用户名 • 常用命令选项– -u 用户id、-d 家目录路径、-s 登录解释器、-G 附加组
]# usermod -u 1600 -d /mnt/nsd15 -s /sbin/nologin -G stugrp nsd15
]# userdel -r nsd01 -r连同家目录一并删除
组基本信息存放在 /etc/group 文件 组成员信息和组密码信息存放在 /etc/gshadow 文件
]# grep tarena /etc/group
tarena:x:1512:
组名:密码占位符:组的GID:组的成员列表– groupadd [-g 组ID] 组名
[root@A /]# groupadd -g 1555 tarena 创建组自定义ID]# gpasswd -a kenji tarena 添加kenji用户到tarena组
]# gpasswd -d kaka tarena 从tarena组中删除kaka用户
]# groupdel tarena 删除组
tar备份与恢复,制作压缩包
Linux独有的压缩格式:
gzip -----> .gz
bzip2 -----> .bz2
xz -----> .xztar工具的常用选项
• tar 集成备份工具
– -c:创建归档
– -x:释放归档
– -f:指定归档文件名称,必须放在所有选项最后
– -z、-j、-J:调用 .gz、.bz2、.xz 格式的工具进行处理
– -t:显示归档中的文件清单
– -C(大写):指定释放路径打包,制作tar包
格式: tar 选项 /路径/压缩包的名字 /路径/源文件 ........
]# tar -zcf /opt/abc.tar.gz /home/ /etc/passwd
格式: tar 选项 /路径/压缩包的名字 -C /释放的路径
]# tar -xf /opt/abc.tar.gz -C /nsd01 解包
cron计划任务,周期性任务
用途:按照设置的时间间隔为用户反复执行某一项固定的系统任务
软件包:cronie、crontabs 日志(日记)文件:/var/log/crond
使用 crontab 命令
– 编辑:crontab -e [-u 用户名] #调用vim文本编辑器
– 查看:crontab -l [-u 用户名]
– 清除:crontab -r [-u 用户名]*:匹配范围内任意时间
,:分隔多个不连续的时间点
-:指定连续时间范围
/n:指定时间频率,每n ...真机定义永久的别名,配置文件 ~/.bashrc 该文件每开启新的终端才生效
# .bashrc
alias gos='ssh -X root@172.25.0.11'
权限和归属
基本权限 对于文本文件:
• 访问方式(权限) r: cat less grep head tail
– 读取:允许查看内容-read r w: vim能够保存并退出 > >>
– 写入:允许修改内容-write w x: Python脚本 Shell脚本
– 可执行:允许运行和切换-execute x权限适用对象(归属)
– 所有者:拥有此文件/目录的用户-user u
– 所属组:拥有此文件/目录的组-group g
– 其他用户:除所有者、所属组以外的用户-other o查看权限
使用 ls -l 命令 – ls -ld 文件或目录...
以d开头表示目录
以-开头表示文本文件
以l开头表示快捷方式设置基本权限 • 使用 chmod 命令
– chmod 归属关系+-=权限类别 文档...
]# ls -ld /nsd01
]# chmod u-w /nsd01
]# chmod g+w /nsd01
]# chmod o=--- /nsd01
]# chmod -R o=--- /opt/aa/ [-R]:递归设置权限
Linux判断用户具备的权限 匹配及停止
判断用户对于该数据的身份 所有者>所属组>其他人
查看相应身份权限位置的权限
目录的 r 权限:能够 ls 浏览此目录内容
目录的 w 权限:能够执行 rm/mv/cp/mkdir/touch/等更改目录内容的操作
目录的 x 权限:能够 cd 切换到此目录设置文档归属• 使用 chown 命令
– chown [-R] 属主 文档...
– chown [-R] :属组 文档...
– chown [-R] 属主:属组 文档...]# chown student /nsd03 #仅修改所有者
]# chown :root /nsd03 #仅修改所属组
]# chown lisi:stugrp /nsd03
附加权限(特殊权限)
Set GID
• 附加在属组的 x 位上
– 属组的权限标识会变为 s
– 适用于目录,Set GID可以使目录下新增的文档自动设置与父目录相同的属组
– 子文档自动继承父目录所属组身份
]# mkdir /nsd07
]# chown :stugrp /nsd07 #修改目录的所属组
]# ls -ld /nsd07
]# mkdir /nsd07/abc01 新建的还是属于原来的组]# ls -ld /nsd07/abc01
]# chmod g+s /nsd07 #赋予Set Gid附加权限
]# ls -ld /nsd07]# mkdir /nsd07/abc02
]# ls -ld /nsd07/abc02 改变了Sticky Bit
• 附加在其他人的 x 位上
– 其他人的权限标识会变为 t
– 适用于开放 w 权限的目录,可以阻止用户滥用 w 写入权限(禁止操作别人的文档)]# mkdir /home/public
]# chmod ugo=rwx /home/public
]# ls -ld /home/public]# chmod o+t /home/public
]# ls -ld /home/public 其他人不能操作Set UID
• 附加在属主的 x 位上
– 属主的权限标识会变为 s
– 适用于可执行文件,Set UID可以让使用者具有文件属主的身份及部分权限
[root@server0 ~]# /usr/bin/mkdir /opt/abc01 mkdir的系统路径]# cp /usr/bin/mkdir /usr/bin/hahadir 复制
]# /usr/bin/hahadir /opt/abc02 可以创建]# chmod u+s /usr/bin/hahadir 加权限
]# ls -l /usr/bin/hahadir
]# su - student
]# /usr/bin/mkdir nsd01
]# ls -l]# /usr/bin/hahadir /nsd02 可以创建
]# ls -l
]# exit
acl访问策略
– 能够对个别用户、个别组设置独立的权限
– 大多数挂载的EXT3/4、XFS文件系统默认已支持设置acl访问控制策略
• 使用 getfacl、setfacl 命令
– getfacl 文档...
– setfacl [-R] -m u:用户名:权限类别 文档...
– setfacl [-R] -m g:组名:权限类别 文档...]# setfacl -m u:lisi:rx /nsd08 设置lisi的ACL
]# getfacl /nsd08 查看目录ACL的策略
]# setfacl -x u:dc /nsd09 删除指定ACL策略
]# setfacl -b /nsd09 删除所有的ACL策略
Web服务:提供一个网页内容
http协议:超文本传输协议
https协议:安全的超文本传输协议wget 软件包的URL网址 -O(大写) /目录路径/新文件名 下载软件包
使用rpm命令管理软件
rpm -i /root/vsftpd-3.0.2-9.el7.x86_64.rpm #安装软件包
rpm -q vsftpd #查看是否安装成功
]# rpm -e vsftpd #卸载软件包]# rpm -qi vsftpd #查询已经安装的软件信息
]# rpm -ql vsftpd #查询已经安装的软件的安装清单]# vim /etc/yum.repos.d/dvd.repo
[dvd] #仓库标识
name=haha xixi hehe lele #仓库描述信息
baseurl=http://classroom.example.com/content/rhel7.0/x86_64/dvd/ #指定服务端基本网络路径
enabled=1 #是否启用本文件
gpgcheck=0 #是否检测红帽的签名认证
[root@server0 ~]# yum repolist #显示识别的仓库信息]# yum remove httpd 卸载软件包
]# yum clean all #清空缓存
]# yum list firefox .查询仓库中是否有该软件
分区规划及使用
扇区默认的大小为512字节
• 识别硬盘 => 分区规划 => 格式化 => 挂载使用
毛坯楼层 => 打隔断 => 装修 => 入驻一 识别硬盘,vd代表虚拟化设备
分区模式: MBR 主引导记录模式 最大的空间支持2.2TB 最多有4个主分区,或者 3个主分区+1个扩展分区(n个逻辑分区)
GPT:最大的空间支持18EB 1EB=1024PB 1PB=1024TB
]# lsblk 识别硬盘
]#partprobe 刷新分区表
fdisk /dev/vdb 分区
n 创建新的分区----->回车----->回车---->回车----->在last结束时 +2G
p 查看分区表
n 创建新的分区----->回车----->回车---->回车----->在last结束时 +1G
d 删除分区
w 保存并退出格式化:赋予空间文件系统的过程
文件系统:存储数据的规则]# mkfs.ext4 /dev/vdb1 mkfs.xfs#格式化文件系统为ext4
]# blkid /dev/vdb1 #查看设备文件系统类型
]# mount /dev/vdb1 /mypart1 挂载
]# df -h #显示正在挂载使用的设备信息
[root@server0 ~]# vim /etc/fstab设备路径 挂载点 文件系统类型 参数 备份标记 检测顺序
/dev/vdb1 /mypart1 ext4 defaults 0 0]#mount -a检测/etc/fstab开机自动挂载配置文件,格式是否正确,检测/etc/fstab中,书写完成,但当前没有挂载的设备,进行挂载
]# umount /mypart1 取消挂载
LVM逻辑卷
作用: 1.整合分散的空间 2.空间可以扩大
– 零散空闲存储 ---- 整合的虚拟磁盘 ---- 虚拟的分区
将众多的物理卷(PV)组成卷组(VG),再从卷组中划分出逻辑卷(LV)
创建卷组
格式:vgcreate 卷组名 设备路径.....
]# vgcreate systemvg /dev/vdb /dev/vdc1
]# vgs 查看卷组基本信息
]# pvs 查看物理卷基本信息创建逻辑卷
格式:lvcreate -n 逻辑卷名 -L 大小 基于的卷组
]# lvcreate -n vo -L 16G systemvg
]# lvs 查看逻辑卷基本信息
]# vgs 查看卷组基本信息逻辑卷使用
格式化文件系统
]# ls /dev/systemvg/vo
]# ls -l /dev/systemvg/vo
]# mkfs.xfs /dev/systemvg/vo 格式化系统为XFS
]# blkid /dev/systemvg/vo 查看文件系统类型挂载访问
]# vim /etc/fstab
/dev/systemvg/vo /mylv xfs defaults 0 0]# df -h 显示正在挂载使用的设备信息
逻辑卷的扩展
]# lvextend -L 18G /dev/systemvg/vo
扩展文件系统(刷新文件系统)
resize2fs:扩展 ext4文件系统
xfs_growfs:扩展 xfs文件系统]#blkid /dev/systemvg/vo 查看文件系统类型
]# xfs_growfs /dev/systemvg/vo
]# df -h扩展卷组空间 卷组没有足够的剩余空间
]# vgextend systemvg /dev/vdc2
了解:逻辑卷支持变小
ext4文件系统支持变小
xfs文件系统不支持变小卷组划分空间的单位: PE 默认大小4M
]# vgdisplay systemvg 显示卷组详细信息
PE Size 4.00 MiB请划分一个250M逻辑卷lvredhat
]# vgchange -s 1M systemvg 修改PE的大小
Volume group "systemvg" successfully changed
[root@server0 ~]# vgdisplay systemvg 显示卷组详细信息[root@server0 ~]# lvcreate -n lvredhat -L 250M systemvg
[root@server0 ~]# lvs]# lvcreate -n lvtest -l 100 systemvg -l:PE的个数
逻辑卷删除:首先删除逻辑卷,再删除卷组,最后删除物理卷
物理卷可以删除也可以不删除
卷组删除的前提为:基于此卷组创建的所有逻辑卷都必须删除卸载逻辑卷
]# lvremove /dev/systemvg/vo
]# lvremove /dev/systemvg/vo 要先卸载才能删除
Logical volume systemvg/vo contains a filesystem in use.
[root@server0 ~]# umount /mylv/删除逻辑卷
]# lvremove /dev/systemvg/vo
Do you really want to remove active logical volume vo? [y/n]: y
Logical volume "vo" successfully removed
]# lvs卷组删除
]# vgremove systemvg
]# grep ^$ /etc/default/useradd 匹配空行:^$
]# grep -v ^$ /etc/default/useradd 去除空行
]# grep -v ^# /etc/login.defs 去除以#开头的行
]# grep -v ^# /etc/login.defs | grep -v ^$ 显示文件的有效信息(去除注释行和去除空行)
find高级使用,递归式的查找
根据预设的条件递归查找对应的文件
– find [目录] [条件1] [-a|-o] [条件2] ...– 常用条件表示:
-type 类型(f、d、l)
-name "文档名称"
-size +|-文件大小(k、M、G)
-user 用户名
-mtime 根据文件修改时间-type 类型(f文件、d目录、l快捷方式)
]# find /boot/ -type l
/boot/grub/menu.lst-name "文档名称"
]# find /etc/ -name "*.conf"
]# mkdir /root/nsd01
]# touch /root/nsd02.txt
]# find /root -name "nsd*"
]# find /root/ -name "nsd*" -type d 目录]# find /root/ -name "nsd*" -type f 文档
-size +|-文件大小(k、M、G)
-user 数据的所有者]# ls -lh /boot/initramfs-3.10.0-123.el7.x86_64.img
]# find /boot/ -size -10M 查找小于10M
]# find / -user student 找出系统中所有student拥有的数据
/proc目录反映的是内存数据
-mtime 根据文件修改时间,表示的所有时间都是过去时间
-mtime +10 #10天之前修改过的数据
-mtime -10 #最近10天之内修改过的数据]# find /root/ -mtime +1000
]# find /root/ -mtime -2
处理find查找到的结果
-exec cp {} /opt \;
-exec:表示额外操作的开始
{}:代表前面find每一个查询结果
\;:表示额外操作的结束]# find /etc/ -name "*tab"
]# find /etc/ -name "*tab" -exec cp {} /opt \; 在目录/etc中找到名字为以tab结尾的结果全部拷贝到/opt中
]# ls /opt/]# find /boot -size +10M
]# find /boot -size +10M -exec cp {} /opt \;
]# ls /opt/
NTP网络时间协议
• Network Time Protocol
– NTP服务器为客户机提供标准时间
– NTP客户机需要与NTP服务器保持沟通]# yum -y install chrony
修改主配置文件
]# vim /etc/chrony.conf
#server 0.rhel.pool.ntp.org iburst
#server 1.rhel.pool.ntp.org iburst
#server 2.rhel.pool.ntp.org iburst
server classroom.example.com iburst #指定服务端位置重起程序(重起服务)
chronyd(服务名)
daemon
英 [ˈdiːmən] 美 [ˈdiːmən]
n.(古希腊神话中的)半神半人精灵 守护进程]# systemctl restart chronyd 重起程序
]# systemctl enable chronyd 设置开机自启动测试
]# date
]# date -s '2008-10-1 10:10:10' 更改时间]# date
]# systemctl restart chronyd
]# date
升级Linux内核
下载一个新版本的内核软件包
]# wget http://classroom.example.com/content/rhel7.0/x86_64/errata/Packages/kernel-3.10.0-123.1.2.el7.x86_64.rpm安装内核
]# uname -r 显示内核版本]# rpm -ivh /kernel-3.10.0-123.1.2.el7.x86_64.rpm 安装内核
]# uname -r #显示内核版本重起验证
]# reboot 重启]# uname -r 显示内核版本