Linux概述
1.基本介绍
- Linux内核是基于GNU发布的自由软件
GNU:目标是编写大量兼容Linux系统的自由软件
GPL:允许用户任意复制,传递,修改和再发布
LGPL
- 常见开发源码的软件
Firefos:网页浏览器
OpenOffice:网页套件
Apache
......
- Linux发行版本构成
完整的OS=Linux内核+各种自由的软件
厂商提供的辅助安装、软件包管理等程序
2.磁盘分区
分区介绍
- 硬盘很大,可分成一块块的,方便管理
- 一块硬盘可以分为两大分区:主分区和扩展分区
1.主分区:能安装操作系统,能进行计算机启动
这样的分区可以直接格式化
2.扩展分区:装文件
- 分区规则
MBR分区表类型的硬盘中最多只能有4个主分区,多余的就要使用扩展分区
如果使用扩展分区,一个硬盘上最多只能有3个主分区和1个扩展分区
扩展分区不能直接使用,经过二次划分成为逻辑分区才可使用
一个扩展分区的逻辑分区可以是任意多个
Linux磁盘分区
- Linux将硬盘、分区等设备都表示为文件
/dev/(hd/sd/a)5
1.dev:硬件设备文件所在目录
2.hd:IDE设备
sd:SCSI设备(服务器专用硬盘)
3.a/b/c...:硬盘顺序号
4.1/2/3...:分区顺序号
- 编号
- 命令
df -lh:查看所有硬盘的使用状
du -sh /etc:查看etc目录的大小
free:显示内存使用状况
arch:显示架构
cat /proc/cpuinfo:显示CPU信息
cat /proc/meminfo:显示内存信息
fdisk -l:查看现有磁盘大小
3.文件系统类型
- Linux默认使用EXT3(第3代扩展文件系统)、SWAP(交换文件系统)
- 一般建议交换分区的大小设置为物理内存的1.5~2倍
4.目录结构
- 列出目录
- 树型目录结构
- 目录及作用
Linux命令
1.概述
- 用于实现某一类功能的指令或程序
- 命令的执行依赖于解释器
2.分类
- 内部命令:属于Shell解释器的一部分
- 外部命令:独立于Shell解释器之外的程序文件
3.通用命令格式
- 命令字符 [选项] [参数]
1.空格分割
2.选项:- 短格式选项,单个字符
-- 长格式选项,多个字符
多个短路式的选项写在一起只用-
3.参数:命令操作的对象
4.常用命令
- ls:全部列表–文件名
- ll:详情列表
- uname -a:查看Linux版本
- reboot:重构
- systemctl set-default multi-user.target:切换界面
5.快捷操作
- tab:自动补齐
- \:强制换行
- Ctrl+U:清空至行首
- Ctrl+K:清空至行尾
- Ctrl+L:清屏
- Ctrl+C:取消本次命令编辑,有结果
- Ctrl+Z:后台运行,没有结果
6.获得命令帮助
- help:查看Bash内部命令的帮助信息
- 命令 --help:查看外部命令的信息
- man 命令:阅读命令的官方手册
- info:阅读信息页
- q:退出
7.管道和重定向
- 管道|:将前面命令的屏幕输出结果作为后面命令的处理对象
- 重定向输出>:将正确的输出结果保存到>后的指定文件中
- col:过滤文本中一些特殊控制字符,支持中文
1.man ls|col -b > a.txt
2.需要可以输入中文的环境,但菜单,标题,系统信息等为英文界面,则输入以下语句
LC_CTYPE=zh_CN.UTF-8
LANG=en_US.UTF-8
8.命令别名
- alias:查看所有的别名
- alias name=value:设置value命令的别名
- unalias name:取消别名
9.目录操作
- pwd:打印当前的工作目录
- cd:切换路径,相对路径没有/,绝对路径/开头
.. 上一级目录
. 当前目录
/ 根目录
~ 当前登录的用户目录
- ls:列出该目录下的所有目录和文件
ls -l:列出详细信息
第一栏位:文件属性
开头 d:目录
-:文件
c:字符文件
l:链接
后面:权限
第二栏位:文件个数,目录=1,文件=目录个数
第三栏位:该文件或目录的拥有者或创建者
第四栏位:所属的组
第五栏位:文件大小
第六栏位:文件或目录创建的时间
第七栏位:文件名
- ll:相当于ls -l,列出详细信息
支持通配符:* 任意多个字符
? 一个字符(想要多个,可以????)
- mkdir:创建目录
单级目录:mkdir cj
多级目录:mkdir -pv cj/a/b/c
p:连父目录一起创建,否则只建一级
v:显示创建详情
- du:查看信息
-a:全部文件
-h:以人类可读的形式
-s:总数
10.文件操作
- touch 文件名:创建文件
- file 文件名:查看文件类型
- cp 被复制的文件名 复制的文件名:复制文件
-r:多级目录使用其递归
- rm 文件名:删除文件
-r:递归
-d:只删除空目录
-f:强制操作而不提示
- mv 被移动的文件名 移动的位置:移动文件
- which 命令程序名:查看命令或程序的位置
- find 查找范围 查找条件:查找
- ln [-s] 源文件或目录 目标文件或目录
硬链接:以文件副本的形式存在,不占用实际空间
不允许目录创建硬链接
只有在同一个文件系统中才可以创建
在选的位置上生成一个和源文件大小相同的文件
软链接-s:以路径的形式存在
可以跨文件系统
可以对不存在的文件名进行链接
可以对目录链接
只会在选定的位置上生产一个源文件的镜像,不会占用磁盘空间
无论硬还是软,文件都保持同步变化
11.文件内容操作
- cat 文件名:查看文件内容
- more 文件名:一页页查看内容
- less 文件名:一页页查看内容
- head -n 文件名:查看前n行
- tail -n 文件名:查看后n行
- wc 文件名:统计单词数+行数+字节数
- grep 待查找内容 文件名:查找指定内容
12.网络命令
- ip addr:查看网卡信息
- ifconfig:查看网卡信息
- ping:man ping自查参数
- scp:上传jar包
- netstat:查看网络状态
netstat -a:查看所有端口
netstat -at:查看TCP端口
netstat -au:查看UTP端口
netstat -ano:查看tomcat端口
netstat -ano|grep 8080:查8080端口
- ss:查看网络状态
- lsof:查看当前系统进程信息
一般 lsof -i|grep 进程名
列1:进程名称
列2:进程所有者
列3:文件描述符
列4:指定磁盘名称
列5:文件大小
列6:所有节点
列7:打开文件的确切名称
- telnet:网络连接命令
- host:分析域名查询工具
- tcpdump:抓取数据包工具,打印所有经过网络接口数据包的头信息
13.进程
- ps:静态列出系统中运行的进程
ps -a:列出系统中所有运行的进行
ps -ef|frep XXX:列出需要的进程
ps -aux:显示进程信息
- top:动态监听系统中不同进程
- kill:杀死结束进程
kill -9 <pid>
- ulimit:控制系统资源在shell和进程上的分配量
14.系统信息查询
- echo $xxx:系统环境变量
- uname:操作系统名
- hostname:本机映射域名
对应 /etc/hostname 文件
- dmesg:开机信息
- uptime:系统运行时间
- du:磁盘空间情况
- top:实时显示系统资源情况
- df:文件系统磁盘空间状态
- free:系统内存
- cal:日历
- date
15.压缩
- gzip
压缩: gzip -9 要压缩的文件
解压: gzip -d 压缩文件
- tar
压缩: tar -cvzf 待压缩文件名.gz 要压缩的文件名
解压: tar -xzvf 压缩的文件名.gz
16.文件编辑
- 作用
1.创建或修改文本文件
2.维护Linux系统的各种配件
- 常用文本编辑器
vi:默认文本编辑器
vim:带颜色
- 工作模式
命令模式、输入模式、末行模式
- 工作模式间切换
管理用户及文件权限
1.用户和组账号概述
- 用户账户:普通用户+程序用户(一个程序装上就有一个空间,超过这个空间就不能操作,别的用户有该用户组权限就可以访问)
- 组账号:基本组(私有组)+附加组(公共组)
- UID:用户标识符
- GID:组标识号
2.用户账号管理
- 用户账号文件
保存用户账号基本信息:/etc/passwd
保存用户密码基本信息:/etc/shadown
- 手动添加用户名和密码的底层步骤
1.创建home目录,将模板文件拷贝进来
2.在/etc/passwd中添加用户
3.在/etc/shadown中添加密码
useradd完成123,但是添加的密码为空,passwd完成3,自定义密码
- 添加用户账号
useradd [选项] 用户名
-u:知道UID标记
-d:知道宿主目录
-e:指定账号失效时间
-g:指定用户基本组名
-G:指定用户附加组名
-M:不为用户建立并初始化宿主目录
-s:指定用户登录的Shell
- 设置更改用户口令
passwd [选项] 用户名
-d:清空用户密码,使空密码就可以登录
-l:锁定用户账号
-S:查看用户账号状态
-u:解锁用户账号
- 用户账号的初始化配置文件
1.新建用户时,从/etc/skel目录中复制而来的初始配置文件===针对某用户个人
~/.profile:每次登录时执行
~/.bashrc:每次进入新Bash环境时执行
~/.bash_logout:每次退出登录时执行
2.全局配置文件===针对全局公司
/etc/bashrc
/etc/profile
- 修改用户账号和属性
usermod [选项] 用户名
-l:更改登录名称
-L:锁定用户账号
-U:解锁用户账号
- 删除用户账号
userdel [-r] 用户名
-r:连用户的宿主目录一并删除
3.组账号管理
- 组账号文件
/etc/group:保存组账号基本信息
/etc/gshadow:保存组账号密码信息
- 添加组账号
groupadd 组账号名
- 删除组账号
groupdel 组账号名
- 查询
查询用户身份标识:id 用户名
查询用户所属的组:groups 用户名
查询用户账号的详细信息:finger [-l] 用户名
查询已登录到主机的用户:users、w、who
4.管理文件/目录的权限和归属
- 查看文件/目录的权限和归属
访问权限
读取:允许查看文件内容、显示目录列表ls
写入:允许修改文件内容,在目录中新建、移动、删除文件或子目录
可执行:允许运行程序、切换目录cd
归属(所有权)
属主:拥有该文件或目录的用户账号
属组:拥有该文件或目录的组账号
- 图解
- 设置文件/目录的权限
1.chmod [ugoa] [+-=] [rwx] 文件/目录--加减方式
u:属主
g:属组
o:其他用户
a:所有用户
+:增加权限
-:去除权限
=:设置权限
2.chmod nnn 文件/目录--数字方式
nnn:三位八进制数
3.-R:递归修改指定目录下所有文件,子目录的权限
- 设置文件/目录的归属
chown 属主 文件或目录
chown :属组 文件或目录
chown 属主:属组 文件或目录
-R:递归修改指定目录下所有文件,子目录的归属
- 使用附加权限
SET位权限:针对文件,为了保证安全性
主要用途:其他用户可以执行该文件,且拥有属组或属主用户的权限
权限字符s,设置在x位上
案例:/etc/shadow的权限----------.
但是可以通过命令操作
/usr/bin/passwd权限-rwsr-xr-x.
说明当前用户拥有root|root的权限
权限类型:
SUID:对属主用户增加SET位权限
SGID:对属组内用户增加SET位权限
设置
chmod ug(+-)s 可执行文件
chmod o(+-)t 目录名
粘滞位权限:针对目录
主要用途:设置公共目录(权限为777),任何用户都能使用
权限字符t,用户不能删除该目录中其他用户文件,如:tmp、var/tmp临时目录
设置
chmod mnnn 可执行文件
m=4:SUID
m=2:SGID
m=1:粘滞位
可叠加
进程管理与计划任务
1.引导流程
2.chkconfig --list 服务名称
- ubuntu中可以安装 sysv-rc-conf 来代替
- 开启某个服务: chkconfig --level 2345 network on
- centos 8:
systemctl list-unit-files 查看服务
systemctl enable smb nmb 开启指定服务
systemctl disable smb nmb 关闭指定服务
3.ps aux
- 查看当前系统中所有的进程及信息
- ps aux|grep 进程名
4.top命令
- 查看动态的进程排名信息
5.pstree -aup
- 进程树
6.进程启动的方式
- 手工启动
1.前台启动:用户输入命令,直接执行程序
2.后台启动:在命令行尾加入“&”符号
cp /dev/cdrom mycd.iso &
将cdrom中的镜像文件挂载到当前用户的home目录下的 mycd.iso中
head -10 mycd.iso
- 调度启动
1.使用at命令,设置在某个特定的时间,执行一次任务:
javascript:setTimeout()
2.使用crontab命令,设置按固定的周期(如每天、每周等)重复执行预先计划好的任务
javascript:setInterval()
7.进程的前后台调度
- Ctrl+Z
将当前进程挂起,即调入后台并停止执行
按Q键则退出此进程
- jobs
查看处于后台的任务列表
- fg
进程的顺序号
将处于后台的进程恢复到前台运行,需指定任务序号
- Ctrl+C
中断正在执行的命令
- kill、killall
kill用于终止指定PID号的进程
killall用于终止指定名称的所有进程
-9 选项用于强制终止
kill -9 进程编号:强制杀死进程
8.计划任务
- at命令
在指定的日期、时间点自动执行预先设置的一些命令操作,属于一次性计划任务
服务脚本名称:/etc/init.d/atd
设置格式:at [HH:MM] [yyyy-mm-dd]
然后输入要执行的操作,按ctrl+D结束输入(自动转化为 <EOT>)
1.atq命令:查询当前设置的at任务列表
2.atrm命令:删除指定任务编号的at任务
- crontab命令
按照预先设置的时间周期(分钟、小时、天……)重复执行用户指定的命令操作,属于周期性计划任务
服务脚本名称:/etc/init.d/crond
主要设置文件
全局配置文件,位于文件:/etc/crontab
系统默认的设置,位于目录:/etc/cron.*/
用户定义的设置,位于文件:/var/spool/cron/用户名
命令
crontab -e [-u 用户名]:编辑
crontab -l [-u 用户名]:查看
crontab -r [-u 用户名]:删除
- 时间数值的表示
时间数值的特殊表示方法
* 表示该范围内的任意时间
, 表示间隔的多个不连续时间点
- 表示一个连续的时间范围
/ 指定间隔的时间频率