Linux 小白入门
mindmap
Root
A
B
C
linux文件系统
linux 的核心就是文件系统,
-
打开终端输入 cd / 进入根目录显示下面的文件,不同的文件对应不同的具体功能
-
bin dev home lib64 media opt root sbin sys usr boot etc lib lost+found mnt proc run srv tmp var
具体的功能 如下所示:
-
bin 目录对应 Binary,存放常用的系统命令
-
sbin 是 super user bin,用于存放管理员指令
-
home 用来存放不同用户(低权限)的目录
-
root 用于存放管理员的用户主目录
-
lib 用于存放最基本的应用共享库 类似于ddl
-
lost + found 一般来说是空的,非法关机的时候才会有文件
-
etc 所有的系统管理所需要的配置文件和子目录,如安装mysql my.conf
-
usr 用户的很多应用程序和文件放在这里
-
boot 放 linux启动核心,相当关键,包括连接文件和镜像文件
-
proc 不能动,是一个虚拟的目录,是系统内存的映射,包括一些连接文件和镜像文件
-
srv 不能动service的,系统启动后需要提取的数据 (不能动)
-
sys 不能动安装了新版本的内核的文件系统
-
tmp 用于存放临时文件
-
dev 类似于windows 设备管理系统管理硬件 (把电脑的设备以文件的形式管理)
-
media 用于识别外部引入的设备比如 U盘光驱等设备管理
-
mnt 用于挂载外部文件系统,比如和外部机器使用共享文件夹、
-
opt 文件夹用于存放软件安装包文件
-
var 在目录中不断扩充的 部分
-
selinux 是一个安全的子系统,能够控制程序只访问特定的文件
linux 远程操作
远程访问工具: xshell和 xftp6
下载链接: 家庭/学校免费 - NetSarang Website (xshell.com)
初始配置好IP地址后就可以 通过xftp 上传文件到linux 主机里通过shell 用指令操作
Vi和Vim 常用操作
vi和vim 可以编辑文本和代码
正常模式(一般模式):打开一个档案就可进入一般模式,在这个模式中你可以使用上下左右光标删除,也可以使用复制粘贴来处理
插入模式:按i之后进入编辑模式
命令行模式:按:在该模式可以进行文本编辑
快速入门
- 登录xshell 输入命令vim hello.java
- 输入 i
- 按动 esc 再输入:wq 切换为命令行模式
vi 和vim 模式切换
在命令行下用 vim 文件名可以进入vim的一般模式
编辑模式到一般模式用 esc ,一般模式 按i 进入编辑模式
从一般模式到命令模式 : / 此外还有一下快捷指令 :wq(保存退出) :q!(不保存退出)
在一般模式下进行拷贝快捷键
yyp 拷贝单前行并且粘贴到下一行 nyyp 复制下面n为复杂的行数并且粘贴
设置行号 输入 :set nu 关闭行号 :set nonu G 跳到文件的最后一行 gg 跳到第一行
撤销动作: 输入u 类似 于ctrl +z
跳转到特定的行进行编辑 行数 + shift +g
- linux 的开机重启命令
shutdown -h now 立刻关机
shutdown -h 1 hello 一分钟后关机
shutdown -r now 重新启动计算机
halt 直接关机
reboot 重新启动
sync 把内存数据同步的到磁盘里面
pwd 显示单前所在的目录
clear 清屏
用户的登录和注销
切换用户: su 用户名
退出用户:logout 如果是由切换用户的话会回退回到上一个用户
添加用户 更新密码
cd 进入 / 下的home目录 输入 adduser 用户名
在home 目录下输入 passwd 用户名 修改相应用户密码
在 home 目录下使用 userdel 用户名 这样会保留家目录,但是无法登录
输入userdel -r 用户名 完整删除目录
用户管理
id 用户名 查看用户的组别
who am i 查看单前登录用户,切换的用户不好显示
用户组 :根据权限等级进行分组
在root 权限下添加组 groupadd 组名 创建用户的时候会默认到同名组里
删除组 groupdel 组名
创建一个用户把用户放到组里面 useradd -g 组名 用户名
转移到另外一个组 usermod -g 组名 用户名
用户的相关文件
/etc/passwd 用户配置文件 里面含义
用户名:口令:用户id:组id: 描述: 主目录 :登录shell (shell 主要将指令进翻译给 linux 内核)
/etc/shadow 密码验证文件
登录名:加密口令:最后修改时间:最小间隔:最大间隔:警告时间:不活动时间:失效时间:标志
/etc/group 文件
组的配置文件,记录Linux包含的组信息
组名:口令:组标识号:组内列表
运行级别
0:关机
1:找回密码 2:多用户没有网络状态
3:多用户有网络服务
4:系统未使用保留给用户
5:图形界面
6: 重启
一般使用 3和5 级别 在 输入 init 等级 进行切换 远程用户默认 3
systemctl get-default 查看运行级别
帮助信息
man +命令或者是指令 可以查看指令的帮助文档
help + 命令
文件指令
pwd 显示当前所在工作目录的绝对路径
ls 显示所有可视文件 加上 -a 显示当前目录里所有的的文件和目录,包括隐藏的 加上 -l 以列表 形式显示
cd 指令 定位绝对路径和 cd ~ cd 回到用户的家目录 cd.. 回到上级目录 cd 后面可以使用绝对路径也可以使用相对路径就可以直接跳到该位置
- 创建目录
mkdir mkdir + 要创建的目录 默认模式只有一级
要创建多级目录 mkdir -p /home/animal/tiger
- 删除文件和目录
rmdir+ 空目录路径 rmdir /home/animal/tiger
指令删除空目录,删除的是空目录有内容是无法删除的
rm 文件路径 进行提示删除
rm -rf +路径 强制删除(慎用)
rm -f 强制删除
rm -r + 递归删除路径同时删除最次级文件夹
- 创建文件
touch 创建空文件 touch hello.txt
cp 指令拷贝到指定的目录 cp 源文件的地址 目标文件地址
例如: cp -r /home/bbb /opt 包括最次级目录一起拷贝
拷贝会出现一覆盖的问题, \cp 可以强制覆盖不提醒
- 文件目录类
可以用来更新文件名字也可以移动文件位置
mv cat.txt pig.txt 直接重命名
mv pig.txt /home 移动
mv pig.txt /home/cat.txt 移动并且重新命名
查看文件
cat 选项 查看的文件
cat -n 文件名 cat 只能浏览文件不能修改文件
cat -n 文件地址 | more 管道命令 more 省略显示
more 指令 全部加载,分屏显示
输入这个指令就可以结合其他快捷键翻页选择, space 下翻一页 enter下翻一行 q立即离开
ctrl F 向下翻动一屏 ctrl B 返回上一屏 = 输出当前的行号 : f 输出文件名和当前行的行号
less 指令
less 指令可以分屏查看文件内容,支持更多的终端,根据显示需求加载内容,显示大型文件具有更大的效率
空格键向下翻页,page down向下翻页,pageup 向上翻页 /需要查找的文字内容,输入n 继续向下查找,输入N 向上查找
?查找的字符 n 向上查找N 向下查找
q 离开查看
echo 指令输出内容到控制台
echo 选项 输出内容
echo hello,word!
echo $PATH 在控制台里打印路径
echo $HOSTNAME 在控制台里打印主机名
head 查看前面若干行的信息
head 文件路径名
head -n 5 文件路径功能,查看前五行的数据
head -n 5 hello.txt
显示文件后面的部分
tail 文件
tail -n 5 文件 显示后面五行
tail -f 文件
输出重定向
- ls -l > 文件名 一个箭头是覆盖作用 ,将列表里面的内容写入到 文件里面
- ls -al >>文件 两个箭头是追加
- cat 文件1 > 文件2 将文件1 的内容覆盖到文件2
- echo “内容">>文件
文件目录类
软链接ln指令,符号链接指令,快捷方式主要链接到其他文件路径,相当于创建快捷方式
ln -s [原文件或者目录地址] [创建的别名]
在home 目录下创建一个软连接myroot,链接到 root
ln -s /root /home/myroot
history 执行历史命令,或者查看历史命令
案例: 显示所有历史命令 history
最近的10个 命令 history 10
执行具体的某一条指令 !编号
时间日期类型
date 显示单前时间
date ""+% Y" 显示当前年份 要加双引号和加号
date ”+%m" 显示当前月份
date "+%d" 显示是哪一天
显示年月日
date "+%Y-%m-%d"
显示年月日时分秒
date "+%Y-%m-%d %H-%M-%D"
设置时间
date -s "2020-11-03 20:02:10"
cal 指令 cal 查看日历 cal 查看日历
搜索查找类
find 指令在指定目录下向下遍历各个子目录将满足调节的的文件或者目录显示在终端中
find 搜索的目录 选项
find 路径 -name 文件名 按照文件名进行查找
find 路径 -user 用户名称 按照指定的用户名所有文件
find 路径 -size +200M 按照指定文件大小进行查找,查找大于200M -200M 小于 200 k
locate 查找指令
快速定位文件路径,利用先建立好的所有文件名称以及路径的locate,在系统自建的数据库里面查询,第一次使用 使用updatedb
locate 文件名 快速查找文件位置
which 指令名,查看某一个指令在哪个目录下
搜索查找类
grep 过滤查找 和管道符配合,显示grep所匹配的行
grep 选项 查找内容 源文件
grep -n 显示匹配行以及行号
比如: cat hello.txt | grep -n "yes" 在查看的hello.txt 文件的时候进行特定搜索 -i 是忽略大小写
压缩和解压指令
gzip 用于压缩文件,gunzip 用于解压
gzip 路径
gunzip 打包文件 进行解压
zip 选项 压缩文件名.zip
unzip 选项 文件名,zip 解压文件
-r 递归压缩 -d指定压缩文件的存放目录
zip -r xxx.zip 指定压缩目录地址
unzip -d /home/tmp 需要解压的文件位置
tar 指令 是打包指令最后打包后的文件是 .tar.gz 文件
tar [选项] 打包后的的文件名 打包内容
常用的选项包括 -c 产生打包文件 -v详细的信息 -f 指定压缩后的的文件名 -z 打包同时压缩 -x解包.tar 文件
压缩多个文件:
tar -zcvf pc.tar.gz 文件目录地址(可以是多个)
tar -zcvf myhome.tar.gz 整个文件目录
将某个目录解压到当前目录
tar -zxvf pc.tar.gz
将特定的文件解压到特定的文件目录下
tar -zxvf /home.tar.gz -C /opt/tmp2
文件的分组管理
查看文件所有者
ls -ahl
组的创建
groupadd 组名
用户创建
useradd -g monster fox 给组里面添加用户
修改文件所在的组
chgrp 组 文件名 将某个文件移动到组里面
改变用户所在的组
usermod -g 组名 用户名
改变用户登录的初始目录
usermod -d 目录名 用户名
权限介绍
输入ll 可以看到列表里面的权限
第0位 l 表示链接 d表示目录 c 表示字符设备 b表示块设备比如硬盘 -表示普通文件
1-3 表示所有者拥有文件的权限rwx 中的选项
第4-6确定所在组拥有该文件的权限rw的权限
第7-9确定其他用户拥有文件权限
rwx 权限
rwx 作用在文件
r表示可以读,查看 w表示可以写,不可以删除除非有改文件对应目录的w权限 x 表示可以执行
rwx 作用在目录
r表示可以读,查看ls w表示可以写,可以删除添加文件重命名 x 表示可以进入目录
- 修改权限
chmod 通过chmod可以修改文件或者目录的名字
chmod 可以改变 u(用户) g(组) o(其他人) 的组合 来修改权限
chmod u=rwx,g=rx,o=x 文件/目录名
chmod u-x,g+w 文件名/文件夹 -是删除权限 +是加权限
r的权限设置为 4 w 为2 x设置为 1 rwx 4+2+1
chmod 751 文件名/目录名
user 7 r +w +x
group5 r+x
other1 x
修改文件所有者
chown 文件所有者 文件/文件夹
chown -R 所有者 文件夹 递归修改所有的文件所有者
修改文件组
chgrp 新的的组名 文件/目录 改变所在组
chgrp -R 组名 目录 递归修改所有的组名
任务调度 crond
在系统的某一个时间执行特定的命令或者程序,比如mysql 的数据备份,简单指令定时调度
crontab 进行定时任务 -e 编辑 crontab 定时任务 -l查询crontab查询 crontab 任务 -r 删除 当前用户的 crontab 任务、
crond 定时调用每分钟 进行简单指令
/ * /1 * * * * ls -l /etc/ > /tmp/t0.txt 查看列表并且覆盖到 指定文件上
第一个 * 表示一个小时的第几分钟
第二个* 表示一天中的第几个小时
第三个 * 表示一个月中的第几天
第5个 * 表示 一周中的星期几 0-7
实际操作
crond -e 开始编辑任务调度
crondtab -r 终止任务调度
crontab -l 列出当前任务列表
service crond restart 重启任务调度
常用的特殊符号
/ * 表示任何时间,用逗号分割时间 , 表示不连续的时间 0 8,12,16 * * * 表示 8点整 12 点整 和 16点整的时间
/ - 表示连续的的时间范围 */n 表示每隔多久执行一次
at 任务调度
at 的任务调用是只执行一次 ps -ef 可以检测正在运行进程有哪些
ps -ef | grep atd 判断atd 是否在运行 job 队列
at 5pm + 2 days
输入要执行的脚步和指令
atrm 编号 删除工作
Ctrl +D 结束命令的输入
Linux 分区
对硬盘可以进行分区
查看硬盘分区指令 lsblk linux 硬盘可以分为 IDE硬盘和 SCSI硬盘(主流)
IDE 驱动标识符 hdx~ x为盘号 a 是基本盘 b是从属盘 c 是辅助主盘 ,d是辅助从属盘
SCSI 硬盘标记是 sdx~
挂载的经典案例,理解磁盘的分区,挂载,卸载的概念
虚拟机增加硬盘:
fdisk 文件目录 增加文件目录
格式化硬盘
mkfs -t ext4 文件目录
查看整体磁盘使用情况
df -h
查看目录磁盘占用使用情况
du -h --max-depth=1 /opt
tree 目录名称 查看目录结构
要先通 yum install tree 插件
Linux进程管理
ps 查看还在执行的命令
ps -a 显示终端的所有进程信息
ps -u 以用户的信息显示进程信息
ps -x 显示后台进程运行的参数
阅读进程信息:
user 用户名
PID 进程号
CPU CPU占比
MEM 物理内存占比
VSZ 占用虚拟内存大小
RSS 占用物理内存的大小
TT: 终端名字
STAT:进程状态 S 睡眠 s-表示先导进程 比普通优先级更低 R 正在运行 D短期等待 Z-僵死 T- 被追踪或者停止
TIME:CPU时间,使用CPU时间
COMMAND: 启动进程所用的命令和参数
ps -ef 全格式显示所有进程
- 终止进程 kill
kill 选项 进程号
kill -9 进程号 强制关闭进程
killall 进程名称
重启sshd 服务 /bin/systemctl strart sshd.service
- 查看进程树更加生动的查看进程树
pstree -p 显示进程的pid
pstree -u 显示进程的所属用户
- 服务管理
服务的本质就是进程但是运行在后台
service 服务名 start 、stop、restart、reload、status
centos 7.0 很多服务器的不再使用 service 和是使用 sysytemctl
查看服务列表
ls -l /etc/init.d
setup 进入服务查看 空格勾选初始启动
查看服务
chkconfig 服务名 --list
chckconfig --level 5 服务名 on/off 开关服务
sysytemctl 管理指令
基本指令: systemctl list-unit-files | grep 服务名
systemctl enable 服务名 设置服务开机启动
systmctl disable 服务名 关闭服务初始启动
systemctl is-enabled 服务名 查询服务是否启动
防火墙端口打开
firewall-cmd --permanent --add-port=端口号/协议
关闭端口: firewall-cmd --permanent --remove-port=端口号/协议
重新载入: firewall-cmd --reload
查询端口: 是否开放 firewall-cmd --query-port=端口/协议
动态监控进程
top [选项] top -d 5
-d n 每隔n秒 -i不显示任何闲置和僵死进程 -p指定pid进行监控
P 以cpu使用率排序 M 以内存的使用率排序 N以PID排序 u 同过特定用户进行监控 终止指定的进程输入k
q 退出监控
网络状况监控
netstat 【选项】
-an 按一定顺序排列输出
-p 按某一 进程进行调用
sshd的服务的信息
rpm打包工具
rpm -qa|grep xx 安装目录查询
查看系统是否安装 firefox
rpm -q 软件名称
rpm -qi 软件名称 查询软件信息
rpm -ql 软件名称 查询软件内部信息
rpm -qf 文件全路径
rpm 包的卸载
rpm -e 包名称
安装rpm 包
rpm -ivh rpm 包的全路径名称
yum 软件包安装
yum 多软件包安装
yum list | grep xxx软件列表
安装指定 yum包
yum install xxx 下载安装
shell 脚本
shell 用于用于解释命令行指令,shell 脚步用于实现多行指令从而某种功能,脚本的后缀名字为 .sh 用vim创建文件 hello.sh
shell 脚本的初始行是 #!/bin/bash 的格式
比如在里面写入一行打印指令
echo "hello -world"
直接输入 ./hello.sh 执行代码 或者输入 sh hello.sh
shell 的变量
shell 分系统变量和用户自定义变量
系统变量 PWD USER
显示当前shell 中所有的变量 :set