Linux 学习
Linux
操作系统的概念
- 管理硬件和软件的一套系统软件
- 一个操作系统的核心叫内核,操作系统的各项功能都是通过内核来实现的
为什么要学Linux?
- 大量公司服务系统都是Linux
- 公司软件运行过程中出现一些问题,需要用Linux去排查
- 网络故障排查
- 程序状态查看
- 定时启动一个程序
- 查看日志
- 软件的安装与卸载
- 程序的配置文件……
shell 介绍
- 是用户通过命令和Linux进行交互的桥梁
- Linux是通过shell来解释执行命令的(命令解释器)
- Linux默认的shell是bash
- 其他的shell分类 ash 、ksh、ksh、csh、zsh
远程登录工具
Xshell
- 远程连接Linux并进行命令操作
- 其他工具:putty、SSH Secure Shell Client
Xftp
- 主要作用是方便windows 和 Linux之间文档传输
- 百度下载安装包和文件可以传输Linux上
- 进行创建、删除等操作
- scp传输
- 本地远程
- scp -r 目录名 用户名@计算机IP:远程路径
- 远程本地
- scp -r 用户名@计算机IP地址:目录名 本地路径
- 本地远程
- scp传输
目录结构介绍
windows 目录结构
- 最顶部的是不同磁盘分区,如C、D、E
- 文件目录都是从盘符开始的
- Windows文件路径大小写不区分,层级“\”来表示
Linux目录介绍
- 没有C、D、E、盘符,一切兜售从“/”开始的,单个的树状结构
- “/”
- Linux系统的根目录
- “/etc”
- Linux系统的配置文件目录
- “/home”
- 普通用户的家目录/主目录,比如有个用户叫Jack,那么他的主目录就是/home/Jack
Linux命令格式
- 格式:命令参数1 参数 2 参数n 对象
- Linux命令由一个命令和零到多个参数来构成,参数和命令之间以及参数和参数之间要用空格隔开
- 命令和参数要区分大小写
- 参数可以合并
su 切换用户
- su – 用户名 会初始化环境,比如全新用户home目录,新的环境变量
- su 用户名 只是切换用户
- sudo : 零时使用超管权限来执行命令
date 系统时间的查看与时间
- 查看系统时间
- 命令date
- date -s ‘20200301’ 修改系统时间为2020年3月1日
- date -s ’15:15:15’修改系统时间为15时15分15秒
- date -s’20200301 15:15:15′ 修改系统时间为2020年3月1日 15时15分15秒
- 同步时间
- ntpdate + 需要同步时间的服务器的IP地址
poweroff/shutdown 关机命令
- poweroff :即刻关机
- shutdown – h now
- shutdown -h +1 一分钟后关机
reboot 重启命令
- reboot
logout用户注销
使用以下前提使用su – 用户进行用户切换
- logout
- exit
- ctrl+d
df – Th 查看Linux的磁盘占用情况
- df – Th
- filesystem: 文件系统对应的设备文件路径名
- type:类型
- size :容量
- avail :剩余容量
- use: 已使用占比
- mounted:挂载
du -ha 查看Linux文件占用空间查看
- du只显示当前目录下子目录的目录大小和总大小,最下面的为当前目录总大小
- 参数 h 表示以方便阅读的格式查看,文件大小有单位标识
- 参数 a 表示查看所有文件的大小
free -m /top 监控系统状态
-
free -m
- Mem:物理内存统计
- total :表示总计分配给缓存的使用数量(分内存数量)
- used:已使用的内存数量
- free:未被分配的内存
- buffer:主要目的是为了进行流量整形,把突发的大数量i/o整理成稳定的小数量,已减少响应次数
- swap:表示硬盘上交换分区
- Mem:物理内存统计
-
top
- total:总进程数
- running:正在运行的进程数
- sleeping:睡眠的进程数
- stopped:僵尸进程数
- Mem
- total:物理内存数量
- used:已使用的物理内存总量
- free:空闲的内存数量
- buffers:用作内核缓存的内存量
- PID:进程id
- user:启动进程的用户
- %MEM:进程使用的物理内存百分比
- TIME+ :进程使用内存的时间总计
ifconfig 查看IP地址
-
查看方法
- ifconfig ens33 :查看指定网卡的IP地址及相关信息
- ifconfig -a :查看所有网卡的IP地址,需要去etc文件目录下
-
ping 命令
- 连通性检查
- 网速检查
- ping -c 测试数据包的数量 目的地地址
-
修改网络接口配置文件
- /etc/sysconfig/network-scripts/ifcfg-ens33文件
- 修改完了重启网卡:service network restart
-
Linux 文件名称概念;
- 大小写敏感,没有专用的扩展名
- 文件abc 和文件ABC是两个文件
- a.txt表示文件的整个名称,并不是文本文件
-
Linux 特殊文件
- “/” 表示根目录
- “.” 表示当前目录
- “..” 表示当前目录的父目录(上级目录)
- “.字符串” 表示隐藏文件,比如“.bash_profile”
-
Linux 当前目录
-
当用户刚登录系统,当前目录就是用户的家目录
-
绝对路径
- 开始于根目录,紧跟着目录数一个一个分支,一直达到所期望的目录或文件
-
相对路径
开始于当前目录,紧跟着目录树一个一个分支,一直达到所期望的目录或文件
-
cd 切换目录相关命令
- cd /home 进入home目录
- cd .. 返回上一级目录,如果连续使用该命令 cd ../../../..
- cd ~ 进入当前用户的家目录
- cd – 返回上次所在的目录
- pwd 显示当前路径
find */? 通配符
- *所有字符
- g*:文件以g开头的文件
- su*s:以su开头并以s结尾的文件
- ?单个字符
- su???:以su开头且后面有三个字符的文件
ls -lah 显示当前目录下的文件
- 参数
- ls 查看目录中的文件和文件夹
- -l 显示文件的目录的详细信息
- -a 显示所有文件,包含所有文件包含隐藏文件
- -h 结合参数,显示文件大小以GB、KB等易读的方式显示
- ls 查看目录中的文件和文件夹
mkdir -p 创建目录
- 创建目录
- mkdir 目录 1 目录2
- mkdir -p 可以递归或同时创建多个目录
touch 创建文件
- touch 文件名
- 创建一个带空格的文件需要用双引号把文件名引起来
- 一次性创创建多个文件
- touch houzi1 houzi2 houzi3
cat 短文件查看内容
- cat命令:查看短文件
- cat -n 文件名:显示文件内容和行号
- tac 文件名:将文件倒过来查看
less 长文件查看命令
- k:向上一行
- j :向下一行
- page up :向前一页
- page down:向后一页
- q:退出
- 通过/字符 可以查看需要查找的内容
tail -n 末尾查看文件命令:
- 从文件末尾查看文件,参数-f 代表实时动态查询
- tail -n 文件名 查看文件最后n行
- 默认显示10行
- 例子:tail -100f file 动态实时查看文件最后一百行信息
cp 复制文件和目录
- 源文件和目录路径都可以是绝对或相对路径
- cp file01 /home/wukong 将file01文件复制到wukong文件下
- cp file01 /home/wukong/file02 将file01 复制到wukong文件下并重命名
- cp file01 file02 /home/wukong 将file01 和file02 文件复制到wukong目录下
- cp file01 /home/wukong 如果新目录下有文件,提示询问是否覆盖 选Y直接覆盖掉
- 复制目录
- 复制目录
- cp -r dir01 /home/root 把dir01目录复制到root目录下
- cp -r file01 file02 dir01 /home/root 把文件和目录复制到root目录下
- 复制目录
mv 移动文件和目录
-
移动文件或目录
-
如果原地址和目标地址相同则重命名
- mv file01 file02 重命名文件file01为file02
- mv dir01 dir02 重命名目录dir01 为dir02
- mv dir01/file01 dir01/file02 重命名file01为file02
-
源地址和目标地址不同
-
mv file01 dir01 移动file01到dir01目录
-
mv file01 dir01/file02 移动file01到dir01目录下且重命名为file02
-
mv file01 file02 dir01 dir02 移动file01、file02、dir01到dir02目录下
-
mv dir01 dir02 如果dir02不存在,则重命名,如果存在,则移动dir01目录到dir02目录下
-
-
rm -rf 删除文件和目录
- rm file01 file02 删除file01和file02文件
- rm -r dir01 删除dir01目录,进行递归处理,将目录下得所有文件和子目录一并处理
- rm -rf dir01 强制删除dir01目录,不询问。
vi / vim 编辑文件命令
-
vi/vim 是所有的Linux系统都会提供的文本编辑器,它给我们提供一个窗口对文件进行编辑
-
为什么学vi/vim?
- 面试可能会问会不会编辑文件
- 工作中有些情况必须用到
- 提高工作效率
-
vi/vim的区别
- vim是vi的增强版,支持vi的全部功能
- 增加了一些命令
- 增加了颜色标记的功能
-
vi可分为三种模式
-
命令模式
-
刚进入时的默认模式时是命令模式
-
此时不可以添加文字
-
不能退格删除文字
可以控制光标
可以使用gg’跳转文件开头
按示shift+g:移动到最后一行的行首
按$:可以控制移动光标的行尾
删除字符:delete 删除单行:dd 删除多行n+dd(n代表要删除的行数,可以删除当前行开始的N行)
可以进入插入模式和底线模式
-
-
插入模式
- 在插入模式下可以对文档内容进行编辑
- 进入插入模式底部有-INSERT-标记
- 在命令模式可以输入如下字符进入插入模式
- i :插入,从目前光标所在处插入字符
- a:增加,目前光标所在的下一字符开始插入字符
- o:插入新的一行,从行首开始输入字符
-
底线模式
- 在命令模式输入冒号进入底线模式
- set nu 显示行号
- set nonu 关闭显示行号
- n 输入数字跳转指定行
- /关键字:先/在输入查找的字符 按n 或shift + n
- 可以输入n 向下继续查找
- shift + n 向上查找
- set ic 设置忽略大小写
- set noic 设置不忽略大小写
- 行号 w 文件名 ,截取文件某一段另存为新的文件
- w 新建文件名
- wq 保存退出
- q! 强制退出
- 在命令模式输入冒号进入底线模式
-
grep 文本关键字搜索
- 是一种强的文本搜索工具,把可以匹配的行打印出来
- 用处
- 查看日志
- 查看命令输出
- 命令格式:grep 关键字 文件
- 两个文件之间查找
- 例如 grep 关键字 文件
- 默认大小写敏感
- 参数
- -c 只输出匹配行数
- -i 不区分大小写
- -n 显示匹配行以及行号
- -v 显示不匹配的所有行
- grep 模糊查询
- grep ‘^abc’ 文件名 查看以abc开头的行
- grep ‘abc$ ‘ 文件名 abc结尾
chmod a+x 文件 文件权限
- 文件必须有一个所属用户和一个所属组
- 不同类型的用户有不同权限
- Linux文件有三种权限
- r 读文件的权限,查看文件夹的内容 ls 查询
- w 具读写的权限 ,创建和删除文件、touch 创建
- x 去执行的文件权限,cd进入该目录
- 注意:对目录,可执行是一个基础权限
- 用户类型分三种
- owner 文件创建者
- group 文件所属组(工作组,用户所在工作组)
- other 其他用户(非owner、非group)
- 谁改变有权限root owner
- 语法:chmod [who] [+/-] [peremission] filename
- chmod u+x file01
- who项表示用户类型 ,可以为一项或多项
- o 拥有者(user–owner)
- g 与拥有者同组的用户(group)
- o 其他人(other)
- a 所有(all)
tar -zcvf/-zxvf 文件的压缩与解压
- tar命令-将多个目录或文件打包成一个大文件,同时还可以通过gizp/bzip2的支持,将文件同时进行压缩
- Windows也WinRAR支持tar .gz 的解压缩
- tar 常用参数
- -c 新建打包文件,可以通过-v 查看压缩过程
- -x 解压指定目录
- -j 通过bizip支持压缩和解压缩,此时文件名*.tar.bz2
- -z 通过gzip 的支持压缩和解压缩,此时文件名*.tar.gz2
- -v 在压缩/解压缩的过程中,将正在处理的文件名显示出来(详细i信息)
- -f -filename -f后接文件名。文件末尾
- -c 将tar 的工作过目录改到指定目录
- -p 允许我们使用绝对路径压缩
- tar 常用方法
- tar -zcvf files.tar.gz file01 file02 打包压缩
- tar -zcvf file.tgz *.doc 打包以.doc结尾的文件和目录
- tar
ps -ef 重定向和管道
- 重定向
- 对于输出结果的不想显示,对显示结果处理
- 把输出结果重新定向,例如把输出结果放在一个文件
- 语法:命令 文件描述 > 文件,描述默认是1
- 输出重定向
- ps -ef > psfile 把ps -ef 的输出覆盖到psfile文件中
- ps -ef >> psfile 追加文件旧文件加新内容
- ps -ef > /dev/null 扔垃圾筒
- 管道
- 命令的输出当初下个命令的输入
- ps -ef |grep root 所有进程 过滤关键字root
- ps -ef |grep root |wc -l 过滤结果的行数
进程
-
进程和程序的概念
-
程序(软件)用代码决定程序的行为,存在存储介质里,比如硬盘
-
程序运行起来,就是操作系统把存储介质上的可执行文件加载到内存里面运行,这个运行的程序就叫进程
-
程序是静态的文件,进程是程序的一次执行过程,进程是动态的
-
查看进程的原因:可以确定哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵尸进程、哪些进程占用了过多的资源等。
-
-
linux里面的进程
-
Shell就是一个进程
- 查看进程的命令:ps(process status)
-
ps命令的使用
-
不带任何参数
-
-e:显示所有进程
-
-f:做一个更为完整的输出
-
-
ps -ef显示出的结果:
-
UID : 用户的ID
-
PID: 进程的ID
-
PPID: 父进程的ID
-
C:cpu的占用率
-
STIME:开始时间
-
TTY:开始此进程的TTY—终端设备
-
TIME:此进程运行的总时间
-
CMD:命令名
-
-
终止进程:
-
自行终止
-
任务执行完成,比如ps
-
用让其退出,比如vi
-
异常退出
-
-
用户手动杀死进程
-
kill PID 杀死进程
-
kill -9 PID 强制杀死进程
-
ctrl+c
-
只能是owner 和 root 可以杀死进程
-
-
-
shell 脚本
- 可一次性执行多条命令的程序文件
- Linux的命令结合shell的语法写入文本中去执行
- Linux默认shell 是/bin/bash
- 执行shell脚本
- 绝对路径 需要权限
- ./ 文件名 需要权限
- sh shell /bash shell
- 定时存放日志实现
- 在/root/home目录新建文件如vi printlog
- 在插入模式输入#!/bin/bash开头
-
定义时间变量datename=$(date +%Y%m%d-%H%M%S)
-
打包压缩文件tar -zcvf /59test/log_$datename.tar.gz -C /var/log .
- 命令模式wq保存退出
- crontab -e 定时任务执行
- 插入模式输入 24 23 * * * sh /root/printlog
-
第一 代表分钟
-
第二 小时
-
第三 每个月的第几天
-
第四 月份
-
第五 代表星期的第几天
-
- 保存退出wq