目录结构
-
linux 的文件系统是采用级层式的 树状目录结构,再次结构中的最上层是根目录“/”
然后再次目录下在创建其他目录。在linux中一切都是文件
-
/bin 是binary的缩写,这个目录存放着最经常使用的命令
-
/sbin s就是super User的意思,这里存放的是系统管理员使用的系统管理程序
-
/home 存放普通用户的主目录,一般该目录名是以用户的账号命名的
-
/root 该目录为系统管理员,也称作超级权限的用户主目录
-
/lib 系统开机所需要最基本的动态链接共享库,其作用类似于windows里面的DLL文件。几乎所有的应用程序都需要用到这些共享库。
-
/etc 所有的系统管理所需要的配置文件和子目录 my.conf
-
/lost+found 这里的文件一般情况下是空的,当系统非法关机后这里会产生一些文件
-
/usr 这是一个非常重要的目录,用户很多的应用程序和文件都存放在这个目录下,类似于windows 下的 program files目录。
-
/boot 存放的是启动linux的核心文件,包括一些连接文件以及镜像文件
-
/proc 这个目录是虚拟目录,它存放的系统内存映射,访问这个目录获取系统信息
-
/tmp 这个目录使用来存放一些零时文件。
-
/srv service的缩写,该目录存放一些服务启动之后需要的一些数据
-
/sys 这是linux2.6内核的一个很大的变化,该目录下安装了2.6内核中出现的一个文件系统sysfs。
-
/dev 类似于windows 的设备管理器,把所有硬件用文件的形式存储
-
/media linux系统会自动识别一些设备,例如U盘等,当 识别时候linux会把识别的设备挂载到这个目录之下
-
/mnt 系统提供该目录是为了让用户临时挂载别的文件系统,我们可以将外部的存储挂载到/mnt/上,然后进入该目录就可以查看里面的内容了。
-
/opt 这是给主机额外的安装软件所摆放的目录,如安装oracle数据库就可以放到该目录下
-
/usr/local 这是另一个给主机额外安装软件所提供的安装目录。一般是通过编译源码安装的程序。
-
/var 这个目录存放着不断扩充的东西,习惯将经常被修改的目录存放在这个目录下。包括各种日志文件。
-
/selinux SELinux 是一种安全的子系统,它能控制程序只能访问特定文件
总结
linux的目录中只有一个根目录
linux的各个目录存放的内容都是规划好的,不要乱放文件
linux是以文件的形式管理我们的设备,因此linux系统一切皆为文件
vi和vim快捷键
- 拷贝当前行 yy ,拷贝当前行向下的五行 5yy,并黏贴(p)。
- 删除当前行 dd,删除当前行向下的五行 5dd
- 在文件中查找某个单词[命令行下 / 关键字,回车查找,输入n就是查找下一个 ]
- 设置文件的行号,取消文件的行号。[命令行下 :set nu 和 :set nonu]
- 编辑 /etc/profile 文件,使用快捷键到底文档的最末行 [G] 和最首行 [gg](正常模式下)
- 在一个文件中输 “hello”,然后又撤销这个动作 u
- 编辑**/etc/profile 文件**,并将光标移到20行 shift+g
关机&重启命令
- shutdown -h now: 表示立即关机
- shutdown -h 1:表示1分钟后关机
- shutdown -r now:立即重启
- halt 效果等价于关机
- reboot 重启
- sync 把内存数据同步到磁盘
当我们关机或者重启时,应该使用sync指令,把内存的数据写入磁盘,防止数据丢失
用户的登录和注销
- 登录时尽量少用root用户,应为它是系统管理员,最大权限,避免操作失误。可以利用普通用户登录,再用"su - 用户名"命令来切换系统管理员身份。
- 在提示符下输入 logout 即可注销用户(在图形界面是无效的,在运行级别3下有效)
用户管理
- Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向管理员申请一个账号,然后以这个账号的身份进入系统
- Linux的用户需要至少属于一个组
添加用户 useradd[选项] 用户名
------ 特别说明 --cd 表示 change directory
1)创建成功后,会自动的创建和用户名同名的家目录
2)也可以通过useradd -d 指定目录 新的用户名,给新创建的用户指定家目录
- 指定密码 passwd 用户名
删除用户 userdel 用户名
------ 特别说明 -- (一般来讲都是要保留家目录)
1)删除用户但是要保存家目录 userdel 用户名
2)删除用户以及用户主目录 userdel -r 用户名
查询用户信息 id 用户名
切换用户 su - 切换用户名
------ 特别说明 --
1)高级别用户向低级别用户转换时不需要输入密码,反之需要
2)权限不够的用户不能访问/root/文件夹
3)回退到原先的的用户用exit
查看当前用户/登录用户 whoami/who am i
用户组 类似于角色,系统可以对有共性的多个用户进行统一的管理
- 新增组 groupadd 组名
- 删除组 groupdel 组名
- 增加用户时直接加上组 useradd -g 用户组 用户名
- 修改用户组 usermod -g 用户组 用户名
用户和组相关的文件
-
/etc/passwd 文件
用户的配置文件,记录用户的各种信息 每行的含义:用户名:口令:用户标志号:组标志号:注释性描述:主目录:登录shell
-
/etc/shadow 文件
口令的配置文件 每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
-
/etc/group 文件
组的配置文件,记录linux包含的组信息 每行含义:组名:口令:组标志号:组内用户列表
指定运行级别
0:关机
1:单用户(找回丢失密码)
2:多用户无网络服务
3:多用户有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
常用运行级别是3和5,要修改默认的运行级别可改文件/etc/inittab 的id:5:initdefault:这一行中的数字
切换到不同级别指令 init[012356]
运行级别示意图
centos7 设置默认开启字符界面
帮助指令
-
man[命令或配置文件]-----获取帮助信息
[root@localhost ~]# man ls
-
help命令----- 获取shell内置命令的帮助信息
[root@localhost ~]# help cd
文件目录类
-
pwd 指令 ----- 显示当前工作目录的绝对路径
[root@localhost ~]# pwd /root
-
ls 指令 [ 选项 ] [ 目录或文件]
常用选项
-a : 显示当前目录所有的文件和目录,包括隐藏的。[root@localhost ~]# ls -al
-l :以列表的方式显示信息
[root@localhost ~]# ls -l
-
cd 指令 [参数] ----- 功能描述,切换到指定目录
常用参数
绝对路径: 从根目录开始定位
相对路径: 从当前工作目录定位到所需要的目录下[root@localhost home]# cd /usr/lib [root@localhost lib]# pwd /usr/lib [root@localhost lib]# cd ../../root [root@localhost ~]# pwd /root
cd ~ 或者 cd :回到自己家目录
cd . . 回到当前目录的上一级目录
-
mkdir 指令 [选项] 要创建的目录 ----- mkdir指令用于创建目录(make director)
[root@localhost ~]# mkdir /home/dog
常用选项 -p :创建多级目录
[root@localhost home]# mkdir -p /home/animal/tiger
-
rmdir [选项] 要删除的空目录
rmdir 指令删除空目录,不能删除非空的目录[root@localhost tiger]# rmdir /home/dog 如果需要删除非空目录: [root@localhost home]# rm -rf /home/animal
-
touch 指令创建空文件(可以同时创建多个文件)
touch 文件名称[root@localhost home]# touch ok1.txt ok2.txt
-
cp指令 [选线] source dest【重要】 ----- cp指令拷贝文件到指定目录
[root@localhost home]# cp aaa.txt bbb/
常用选项 -r 递归复制整个文件夹
[root@localhost home]# cp -r test/ zwj/
强制覆盖不提醒的方法: \cp
-
rm指令 [选线] ----- 指令移除文件或目录
常用选项
-r: 递归删除整个文件夹
-f: 强制删除不提示[root@localhost home]# rm aaa.txt [root@localhost home]# rm -rf bbb/
-
mv指令 ---- 移动文件与目录或重命名
mv odlNameFile newFileName ----- 重命名
[root@localhost home]# mv aaa.txt pig.txt
mv /temp/movefile /targetFolder ----- 移动文件
[root@localhost home]# mv aaa.txt pig.txt
-
cat指令 [选项] ----- 查看文件内容
常用选项 -n : 显示行号
[root@localhost ~]# cat -n /etc/profile | more 以cat指令打开并分页显示
- more指令 是一个基于 VI 编辑器的文本过滤器,它是以全屏幕的方式按页显示文本文件的内容
操作 | 功能说明 |
---|---|
空格键 | 向下饭庄一页 |
enter | 向下翻转一行 |
q | 立刻离开more,不再显示改文件内容 |
ctrl + f | 向下滚动一屏 |
ctrl + b | 返回上一屏 |
= | 输出当前行号 |
:f | 输出文件名和当前行行号 |
- less指令 用来分屏查看文件内容,它的功能与more指令相似,但是比more指令更加强大,支持各种显示终端,less指令在显示文件内容时,并不是将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率
操作 | 功能说明 |
---|---|
pagedown | 向下翻页 |
pageup | 向上翻页 |
/子串 | 向下搜索[子串] n:向下查找 N:向上查找 |
?子串 | 向上搜索[子串] n:向上查找 N:向下查找 |
q | 离开less |
-
>指令和>>指令
> 输出重定向
>>追加[root@localhost home]# ls -l > a.txt 将 ls -l 的输出覆盖写入a.txt文件,若没有a.txt就创建一个 1)ls -l>文件 (列表的内容写入文件a.txt(覆盖写)) 2)ls --al>>文件 (列表的内容追加到文件a.txt的末尾) 3)cat 文件1 > 文件2 (将文件1的内容复制到文件2) 4)echo "内容">>文件
-
echo指令 ----- 输出内容到控制台
echo[选项][输出内容] -
head指令 ------ 显示文件的开头部分内容。默认情况下head指令显示文件的前10行内容
head 文件(产看文件的前十行内容)
head -n 5 文件 (产看文件的头5行内容) -
tail指令 用于输出文件尾部内容,默认情况下显示文件尾部后10行
1)tail 文件 查看文件后十行内容 2)tail -n 5 文件 查看文件后五行内容 3)tail -f 文件 实时追踪该文档的所有更新
-
ln指令 ----- 软链接也叫符号链接,类似于windows里面的快捷方式,主要存放了链接其他文件的路径
ln -s[原文件或目录][软链接名](给原文件创建一个链接) -
history指令 ----- 查看已经执行过的历史命令,也可以执行历史命令
history history 10(显示最后10次执行的指令) !20(执行第20条指令)
时间日期类
- date — 显示当前时间
date+%Y — 显示当前年份
date+%m — 显示当前月份
date+%d — 显示当前是哪一天
date"+%Y-%m-%d %H:%M:%S" — 显示年月日时分秒
—设置日期:date -s 字符串时间 - cal[选项] — 查看日历指令
搜索查找类
- find [搜索范围] [选项] — 将从指定目录向下递归遍历其各个子目录,将满足条件的文件或目录显示在终端
选项 | 功能 |
---|---|
-name<查询方式> | 按照指定的文件名查找模式查找文件,支持通配符(*.txt) |
-user<用户名> | 查找属于指定用户名所有文件 |
-size<文件大小>(大于:+,小于:-) | 按照指定的文件大小查找文件 |
-
locate — 快速定位文件路径。利用事先建立好的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate的时刻
使用命令前 先用 updatedb
-
grep [选项] 查找内容 源文件 和 管道符号 |
grep过滤查找,管道符 | ,表示将前一个命令的处理将结果传递给后面的命令处理[root@localhost home]# more hello.txt | grep -ni yes 3:yYes 4:Yes
选项 功能 -n 显示匹配行及行号 -i 忽略字母大小写
压缩和解压类
-
gzip/gunzip — gzip 用于压缩文件 / gunzip 用于解压
gzip 文件 — 将文件压缩为*.gz文件(压缩过后不会保留原来的文件)
gunzip 文件.gz — 解压文件指令 -
zip/unzip
zip [选项]XXX.zip
unzip[选项]XXX.zipzip常用选项
-r : 递归压缩,即压缩目录
unzip常用选项
-d 目录 :指定解压后文件的存放目录 -
tar[选项] xxx.tar.gz 打包的内容 — 打包指令,最后打包的文件是.tar.gz的文件
[root@localhost home]# tar -zcvf a.tar.gz a1.txt a2.txt [root@localhost home]# tar -zxvf myhome.tar.gz -C /opt
选项 | 功能 |
---|---|
-c | 产生.tar打包文件 |
-v | 显示详细信息 |
-f | 指定压缩后的文件名 |
-z | 打包同时压缩 |
-x | 解压.tar文件 |
文件/目录 所有者
-
ls -ahl — 查看文件所有者
-
chown 用户名 文件名 — 修改文件所有者
chown newowner file 改变文件所有者 chown newowner:newgroup file 改变用户的所有者和所有组 -R 如果是目录则使其下所有文件或目录递归生效
-
groupadd 组名 — 创建组
文件/目录 所在组
-
chgrp 组名 文件名 — 修改文件所在组
chgrp newgroup file 改变文件所在组
改变用户 所在组
- usermod -g 组名 用户名
- usermod -d 目录名 用户名 改变该用户登录的初始目录
权限
-
rwx 权限详解
rwx 作用到文件
1)r 代表看可读
2)w 代表可写,但不可以删除
3)x代表可执行rwx 作用到目录
1)可读取
2)可写入,可修改
3)可以进入该目录 -
chmod 修改权限
第一种方式 + - = 变更权限 u :所有者 g : 所在组 o :其他人 a : 所有人 1)chmod u=rwx,g=rx,o=x 文件目录名 2)chomd o+w 文件目录名 3)chomd a-x 文件目录名 第二种方式 通过数字变更 可用数字表示r = 4, w = 2,x = 1,rwx = 7 chmod u=rwx,g=rx,o=x 文件目录名 相当于chmod 751 文件目录名
crond 任务调度
- crontab [选项] ----- 进行定时任务的设置
任务调度,是指系统在某个时间执行的特定的命令或程序
分类:
系统工作:有些重要的工作必须周而复始的进行
个别用户工作:用户可能希望执行某些程序
常用选项 :
-e | 编辑crontab定时任务 |
---|---|
-l | 查询crontab任务 |
-r | 删除当前用户所有的crontab任务 |
service crond restart | 重启任务调度 |
例:*/1 * * * * ls -l /etc > /tmp/to.txt
意思是:每小时的每分钟执行 ls -l /etc > /tmp/to.txt 命令
参数说明 :
项目 | 含义 | 范围 |
---|---|---|
第一个 * | 一小时当中的第几分钟 | 0-59 |
第二个 * | 一天当中的第几小时 | 0-23 |
第三个 * | 一月当中的第几天 | 0-30 |
第四个 * | 一年当中的第几月 | 1-12 |
第五个 * | 一周当中的星期几 | 0-7(0和7都代表星期日) |
特殊符号说明
特殊符号 | 含义 |
---|---|
* | 代表任何时间。比如第一个*代表一小时中的每一分钟都执行 |
, | 代表不连续的时间,比如“0 8,12,16 * * * 命令”,代表每天的8点 0分,12点0分,16点0分都执行一次命令 |
- | 代表连续的时间范围,比如“0 5 * * 1-6 命令”,代表在周一到周六的凌晨5点执行命令 |
*/n | 代表每个多久执行一次。比如“*/10 * * * * 命令”,代表每隔十分钟执行一次 |
分区
-
分区原理
1)对linux来说无论有几个分区,分给那个目录使用,他归根结底只是一个根目录,一个 独立且唯一的文件结构,linux每个分区都是用来组成整个文件系统的一部分 2)linux采用一种叫做 "载入"的方式,它的整个文件系统中包含了一整套的文件和目 录,且将一个分区和一个目录联系起来,这时要载入的一个分区将使它的存储空间 在一个目录下获得。
lsblk -f 查看系统的分区和挂载情况
如何增加一块硬盘
1)虚拟机添加硬盘
2)分区 fdisk /dev/sdb
3)格式化 mkfs -t ext4 /dev/sdb1
4)挂载 先创建一个 /home/newdisk , 挂 载 mount /dev/sdb1 /home/newdisk
5)设置可以自动挂载(永久挂载,当你重启系统,仍然可以挂载到 /home/newdisk) 。
vim /etc/fstab
/dev/sdb1 /home/newdisk ext4 defaults 0 0
查询磁盘情况
- df -lh — 查询整体磁盘情况
- du -h /目录 — 查询指定目录的磁盘占用情况
- 查询指定目录的磁盘占用情况,默认为当前目录
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
–max-depth=1 子目录深度
-c 列出明细的同时,增加汇总值
查询/opt磁盘占用情况,深度为1
统计/home 文件夹下文件的个数
wc 是统计的意思
统计/home 文件夹下目录的个数,包括子文件夹里的
用树状显示文件结构
网络配置
-
自动获取ip
-
固定ip
说明:直接额修改配置文件来指定ip,并可以连接到外网,编辑 vi/etc/sysconfig/network-scripts/ifconfig-eth0,将ip配置为静态
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
-
firewalld的基本使用
启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld
开机禁用 : systemctl disable firewalld
开机启用 : systemctl enable firewalld -
systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。
启动一个服务:systemctl start firewalld.service
关闭一个服务:systemctl stop firewalld.service
重启一个服务:systemctl restart firewalld.service
显示一个服务的状态:systemctl status firewalld.service
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl --failed -
配置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 -
开启一个端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
-
关闭端口方法:
firewall-cmd --remove-port=8080/udp --permanent
命令含义:
–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效
- 重新载入
firewall-cmd --reload
查看
firewall-cmd --zone= public --query-port=80/tcp
删除
firewall-cmd --zone= public --remove-port=80/tcp --permanent
进程管理
-
ps [选项] ----- 查看进程
-a : 显示当前终端的所有信息 -u : 以用户的格式显示进程信息 -x : 显示后台进程运行的参数
•System V 展示风格
•USER:用户名称
•PID:进程号
•%CPU:进程占用 CPU 的百分比
•%MEM:进程占用物理内存的百分比
•VSZ:进程占用的虚拟内存大小(单位:KB)
•RSS:进程占用的物理内存大小(单位:KB)
•TT:终端名称,缩写 .
•STAT:进程状态,其中 S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等
•STARTED:进程的启动时间
•TIME:CPU 时间,即进程使用 CPU 的总时间
•COMMAND:启动进程所用的命令和参数,如果过长会被截断显示
-
ps -ef ----- 以全格式显示当前所有进程
-e 显示所有进程 -f 全格式
-
pstree [选项] ----- 以树状形式展示进程之间的关系
-p : 显示进程pid -u : 显示进程所属的用户
•UID:用户 ID
•PID:进程 ID
•PPID:父进程 ID
•C:CPU 用于计算执行优先级的因子。数值越大,表明进程是 CPU 密集型运算,执行优先级会降低;数值越小,表明进程是 I/O 密集型运算,执行优先级会提高
•STIME:进程启动的时间
•TTY:完整的终端名称
•TIME:CPU 时间
•CMD:启动进程所用的命令和参数
- 终止进程kill和killall
kill [选项] 进程号 ----- 通过进程号杀死进程
killall 进程名称 ----- 通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用
常用选项:-9 : 表示强迫进程立即停止
service 管理
-
service 管理指令
service 服务名[start | stop | restart | reload | stauts] 在centos7.0之后,不再使用service 指令,而是systemctl
-
查看服务名(centos6)
方式1:setup -> 系统服务
方式2:/etc/init.d/服务器名称查看centos7 服务
服务的运行级别(之前的系统级别 0 — 6
chkconfig — 给每个服务的各个运行级别设置自启动/关闭
1)查看服务 chkconfig --list | grep xxx
2)chkconfig 服务名 --list
3)chkconfig --level 5 服务名 on/off
systemctl
列出所有可用单元 systemctl list-unit-files
列出所有运行中单元 systemctl list-units
列出所有失败单元 systemctl –failed
检查某个单元(如 crond.service)是否启用 systemctl is-enabledcrond.service
列出所有服务 systemctl list-unit-files –type=service
查看网络情况netstat [选项]
netstat -anp
选项说明
-p 显示哪个进程在调用
-an 按一定顺序排列输出
动态监控进程
top 与 ps 命令很相似。它们都用来显示正在执行的进程。Top 与 ps 最大的不同之处,在于 top 在执行一段时间可以更新正在运行的的进程。
-
top [选项]
top
top:输入此命令,按回车键,查看执行的进程
输入u 再输入用户名,就可以监控此用户top:输入此命令,按回车键,查看执行的进程。
k:然后输入“k”回车,再输入要结束的进程 ID 号