Linux学习
Posted yfyyy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux学习相关的知识,希望对你有一定的参考价值。
Linux教程
Linux的应用领域
个人桌面领域
此领域是Linux应用最薄弱的环节,但是催着Deepin等,桌面占有率有所回升
服务器领域
此领域是服务器的应用是最强的,Linux免费、稳定、高效等特点在这里得到了很好的体现
嵌入式领域
Linux运行稳定、对网络良好支持性、低成本,内核最小可以几百kb等
Linux进阶之路
- linux环境下基本操作命令、文件操作命令、编辑工具使用、linux用户管理
- linux中各种配置
- linux下搭建开发环境
- shell脚本、对Linux服务器进行维护
- 进行安全设置、防止攻击,保障服务器正常运行,对系统调优
- 深入理解linux(对内核有研究),熟练掌握大型网站应用架构组成、熟悉各个环节的部署与维护
一、Linux入门
1.1 Linux介绍
Linux是一款操作系统,免费,开源 ,安全,高效,稳定,处理高并发非常强悍
Linux创始人 linus 林纳斯
Linux吉祥物
Linux发行版
RedHat Ubuntu Suse opensuse
目前主要的操作系统
1.2 Linux与Unix的关系
贝尔实验室与麻省理工学院,通用电气公司开发分时操作系统,后感觉太过庞大,故遗弃。
后来Ken tompson 肯?汤普森在此基础上,使用B语言开发了Unix系统,
肯?汤普森当年开发 UNIX 的初衷是运行他编写的一款计算机游戏 Space Travel,这款游戏模拟太阳系天体运动,由玩家驾驶飞船,观赏景色并尝试在各种行星和月亮上登陆。他先后在多个系统上试验,但运行效果不甚理想,于是决定自己开发操作系统,就这样,UNIX 诞生了。
后期,使用c语言重写了Unix,在此基础上,IBM、Sun、hp等公司相继开发出属于自己的Unix系统,
它们开发出的Unix非常昂贵,并不开源,并且必须运行在配置很高的计算机上!
Richard Stallman认为在自由的时代,用户应该免费享有对软件源代码阅读、修改的权力。软件公司可以靠提供服务和训练获得盈利。故 Richard Stallman 提出了 GNU计划!
GNU计划:
Linux 内核最初是由李纳斯?托瓦兹(Linus Torvalds)在赫尔辛基大学读书时出于个人爱好而编写的,当时他觉得教学用的迷你版 UNIX 操作系统 Minix 太难用了,于是决定自己开发一个操作系统。第 1 版本于 1991 年 9 月发布,当时仅有 10 000 行代码。
李纳斯?托瓦兹没有保留 Linux 源代码的版权,公开了代码,并邀请他人一起完善 Linux。与 Windows 及其他有专利权的操作系统不同,Linux 开放源代码,任何人都可以免费使用它。
1.3 Linux与Windoes比较
比较 | Window | Linux |
---|---|---|
免费与收费 | 收费且贵 | 免费或很少费用 |
软件与支持 | 数量与质量的优势,大部分为收费软件,由微软提供支持和服务 | 开源自由软件,基本免费,没有资金支持,体现性较低,有全球的Linux开发者与自由软件社区提供支持 |
安全性 | 经常打补丁 | 比Windows略强 |
使用习惯 | 大多数依靠鼠标完成,纯图像界面,入门简单 | 图形界面+命令行,可以只使用键盘完成一切操作,入门较难,一旦入门,熟练后效率极高 |
可定制性 | 封闭 | 开源 |
应用场景 | 桌面操作系统 | 服务器 |
二、Linux的安装
2.1 VMware安装
略
2.2 Cenots安装
网络适配器
虚拟机网络连接的三种形式说明
NAT模式(建议)
不会造成ip冲突
在window下又创建一个新的ip,虚拟机和这个新的ip为同一网下
桥接模式(一般不用)
虚拟机网段在同一ip下,属于共享
容易ip冲突,ip不够用
仅主机模式
独立的ip,不会和外网产生关系
2.3 安装vmtools
目前自带,不用自己整
三、Linux的目录结构
Linux文件系统采用级层式的树状目录结构,在此结构的最上层是根目录"/",然后再此目录下再创建其他目录。
Linux世界里,一切皆是文件
四、Linux远程登陆
一般情况,真实的Linux服务器,并不在本机上
远程登陆到Linux的工具:
Xshell
Xshell是目前最好的远程登陆到Linux操作的软件,流畅的速度并且完美解决乱码问题。
支持SSH1,SSH2,Microsoft Windows 平台的 TELNET协议
上传下载工具:
XFtp
基于Windows平台的功能强大的SFTP、FTP文件传输文件。使用了Xftp以后,可以安全的传输文件
需要Linux开启sshd服务22
Linux ip地址查询
ifconfig
远程登陆
远程上传下载
五、vi/vim编辑器
- 所有的Linux系统都会内建vi文本编辑器
- Vim具有程序编辑的能力,可以看作是Vi的增强版本,被广泛应用
5.1 Vim 的三种模式
正常模式
正常以vim打开文档,可以移动光标处理文档
插入/编辑模式
按下i,l,o,O,a,A,r,R进入编辑模式
命令行模式
可以提供指令
5.2 常用Vim 命令
删除一个字符 x
删除一行 dd
删除换行 J
撤销 u
ctrl + R 取消撤销
复制 y
....
六、开机、重启、用户登陆与注销
6.1 关机,重启
shutdown -h now 立即关机
shutdown -h 1 一分钟后关机
shutdown -r now 重启
halt 关机
reboot 重启
sync 把内存的数据同步到磁盘
6.2 用户登陆和注销
logout 注销用户
七、用户管理
7.1 用户家目录
/home目录下有各个创建的用户对应的家目录,当用户登陆时,会自动进入家目录
7.2 用户管理
useradd 用户名 添加用户
passwd 用户名 给用户指定密码
userdel 用户名 删除用户(保护家目录)
userdel -r 用户名 删除用户(删除用户主目录)
su - 用户名 切换用户名
exit 返回原来用户
whoami 查看当前用户
7.3 用户组管理
用户组:类似于角色,系统可以对有共性的多个用户进行统一的管理。
groundadd 组名 增加组
groupdel 组名 删除组
useradd -g 用户组 用户名 增加用户时直接加上组
usermod -g 用户组 用户名 修改用户的组
7.4 用户和组的相关文件
/etc/passwd 文件
用户的配置文件,记录用户各种信息
/etc/shadow 文件
口令的配置文件
/etc/group 文件
组的配置文件,记录Linux包含的组的信息
八、实用指令
8.1 指定运行级别
系统的运行级别配置文件 /etc/inittab
- 关机
- 单用户(root用户密码忘记可以找回)
- 多用户(无网络服务)
- 多用户(有网络服务)
- 保留
- 图形界面
- 重启
8.2 切换到指定运行级别的指令
命令:init[012356]
8.3 帮助指令
- man 指令
- help 指令
百度更直接
8.4 文件目录类
pwd 指令
显示当前工作的绝对路径
ls 指令
查看信息
-a :显示当前目录所有的文件和目录(包括隐藏)
-l :以列表的形式显示信息
cd 指令
切换到指定目录
~ :回到家目录
.. :回到上一级
mkdir 指令
创建目录
-p :创建多级目录
rmdir 指令
删除空目录
rm -rf 指令
删除非空目录
touch 指令
创建空的文件
cp 指令
拷贝文件到指定目录
-r :递归复制整个文件夹
cp -r test/ zl/ :有相同文件时,会提醒是否覆盖
cp -r test/ zl/ :不会提醒,会直接覆盖
rm 指令
移除文件或者目录
-r :递归删除整个文件夹
-f :强制删除不再提示
mv 指令
移动文件或者重命名
cat 指令
查看文件内容
-n :显示行号
一般带上管道命令 |more
more:分页显示
more 指令
基于vi编辑器的文本过滤器,以全屏幕的方式按页显示文本文件的内容
less 指令
分屏查看文件内容,对于显示大型文件有较高的效率(日志文件)
> 指令 与 >> 指令
> :输出重定向
>> :追家
ls -l > 文件 :列表的内容写到a.txt中
ls -al >> 文件 :列表的内容追加到aa.txt中
cat 文件1 > 文件2 :将文件1的内容覆盖到文件2
echo 指令
输出内容到控制台
head 指令
显示文件的开头部分(默认10行)
-n :指定行数
tail 指令
输出文件尾部内容(默认10行)
-n :指定行数
-f :实时追踪该文档的所有更新
ln 指令
符号连接,类似于快捷方式
-s :软连接
history 指令
查看已经执行过历史命令,也称为历史指令
8.5 时间日期类
data 指令
显示当前日期
data + %Y :显示当前时间
data + %m :显示当前年份
data + %d :显示当前月份
data ”+%Y-%m-%d %H:%M:%S“ :显示年月日时分秒
8.6 搜索查找类
find 指令
从指定目录向下递归地遍历其各个子目录,将满足的文件或者目录显示在终端
find [搜索范围] [选项]
选项 -name -user -size
locate 指令
快速定位文件路径
grep 指令和管道符号 |
-n :显示行号
-i :忽略字母大小写
8.7 压缩和解压类
gzip/gunzip 指令
gzip用于压缩、
gunzip用于解压
gzip 文件 (压缩文件)
gunzip 文件.gz (解压缩文件)
tar 指令
打包指令,打包的是.tar.gz文件
tar [选项] XXX.tar.gz
-c :产生打包
-v :显示详细信息
-f :指定压缩后的文件名
-z :打包的同时压缩
-x :解包.tar文件
九、组管理和权限管理
9.1 Linux组基本介绍
在Linux中的每个用户必须属于一个组,不能独立于组外。在Linux中每个文件有所有组、所在组、其他组的概念。
文件/目录所有者:谁创建就是所有者
查看: ls -ahl
修改: chown 用户名 文件名
组的创建:
基本指令: groupadd 组名
文件/目录所在组
修改: chgrp 组名 文件名
其他组
除了文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组
改变用户所在组
usermod -g 组名 用户名
usermod -d 目录名 用户名 改变该用户登陆的初始目录
9.2 权限的基本介绍
ls -l 中显示内容如下
-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
0-9位说明
第0位确定文件类型(d目录,-普通文件,c字符设备,b块文件)
-普通文件
b块文件
第1-3位确定所有者(该文件的所有者)拥有该文件的权限
r:可读(文件)可读(目录)
w:可写(文件)可修改(目录)
x:可以被执行(文件)可以进入目录(目录)
第4-6位确定所属组(同用户组的)拥有该文件的权限
第7-9位确定其他用户拥有该文件的权限
修改权限 -chmod
通过chmod指令,可以修改文件或者目录的权限
第一种方式:+、-、=变更权限
u:所有者 g:所有者 o:其他人 a:所有人
- chmod u = rwx,g = rx,o = x 文件目录名
- chmod o + w 文件目录名
- chmod a-x 文件目录名
第二种方式:通过数字变更权限
规则:r = 4 w = 2 x = 1 ,rwx = 4 + 2 + 1 = 7
chmod u = rwx,g = rx,o = x 文件目录名
相当于 chmod 751 文件目录名
修改文件所有者-chown
chown newowner file 改变文件的所有者
chown newowner:nowgroup file 改变用户的所有者和所有组
-R 如果是目录 则使其下所有子文件或目录递归生效
修改文件所在组-chgrp
chgrp newgroup file 改变文件的所有组
十、定时任务调度
crond 任务调度
任务调度:指系统在某个时间执行的特定的命令或程序
任务调度分类:1.系统工作 2.个别用户工作
crontab [选项]
-e :编辑crontab定时任务
-l :查询crontab任务
-r :删除当前用户所有的crontab任务
十一、Linux磁盘分区、挂载
11.1 分区基础知识
分区的方式
- mbr分区
- 最多支持四个分区
- 系统只能安装到主分区
- 扩展分区要占一个主分区
- MBR最大只支持2TB,但拥有最好的兼容性
- gtp分区
- 支持无限多个主分区(但是操作系统有限制)
- 最大支持18EB的容量(1EB = 1024PB 1PB = 1024TB)
- win7 64位以后支持gtp
Linux分区
- Linux无论有多少分区,只有一个根目录
- Linux采用“载入”处理。它的整个文件系统中包含了一整套的文件和目录
Linux磁盘分为IDE硬盘和SCSI硬盘,目前基本是SCSI硬盘
11.2 磁盘情况查询
语法:
df -h /目录 (查询指定目录的磁盘占用情况,默认为当前目录)
-s 指定目录占用大小汇总
-a 含文件
-max-depth=1 子目录深度
-c 列出明细的同时,增加汇总量
11.3 工作实用指令
统计/home 文件夹下文件的个数
ls -l /home | grep "^-" | wc -l
统计/home 文件夹下目录的个数
ls -l /home | grep "^d" | wc -l
统计/home 文件夹下文件的个数,包括子文件夹里的
ls -lR /home | grep "^-" | wc -l
统计文件夹下文件的个数,包括子文件夹里的
ls -lR /home | grep "^d" | wc -l
以树状显示目录结构
yum install tree tree
十二、网络配置
12.1 Linux网络配置原理图(含虚拟机)
目前我们的网络配置采用的是NAT
12.2 查看网络IP和网关
查看虚拟网络编辑器
Vmware 编辑 -- 网络编辑器
修改ip地址(虚拟网卡)
网络编辑器中修改
查看网关
虚拟网络编辑器 -- NAT设置
查看windows环境下中Vmnet8网络配置
属性中查看
或者ipconfig查看
12.3 Ping的使用
语法
ping 目的主机 (功能描述:测试当前服务器是否可以连接目的主机)
应用
ping www.baidu.com
12.3 Linux网络环境配置
方式一、自动获取
缺点:Linux每次获取的Ip不同,不适用于做服务器
方式二、指定固定ip
推荐,直接修改配置文件
/etc/sysconfig/network-scripts/ifcfg-eth0
192.168.186.129
重启网络服务
service network restart
十三、进程管理
13.1 基本介绍
- Linux中,每个执行的程序(代码)都称之为一个进程。每个进程都分配一个id号
- 每一个进程,都会对应一个父进程,父进程可以复制多个子进程
- 每个进程都可能以两种方式存在。前台与后台。
- 一般系统的服务都是以后台进程的方式存在,而且会常驻在系统中。知道关机
13.2 显示系统执行的进程
ps命令
-a :显示当前终端所有进程信息
-u :以用户的格式显示进程信息
-x :显示后台进程运行的参数
字段 | 说明 |
---|---|
PID | 进程识别号 |
TTY | 终端机号 |
TIME | 此进程所消CPU时间 |
CMD | 正在执行的命令或进程名 |
ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
-A 列出所有的行程
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程
au(x) 输出格式 :
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 行程拥有者
PID: pid
%CPU: 占用的 CPU 使用率
%MEM: 占用的记忆体使用率
VSZ: 占用的虚拟记忆体大小
RSS: 占用的记忆体大小
TTY: 终端的次要装置号码 (minor device number of tty)
STAT: 该行程的状态:
D: 无法中断的休眠状态 (通常 IO 的进程)
R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有足够的记忆体分页可分配
<: 高优先序的行程
N: 低优先序的行程
L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
START: 行程开始时间
TIME: 执行的时间
COMMAND:所执行的指令
13.3 终止进程Kill和Killall
Kill [选项] 进程号 :杀死进程
killall 进程名称 :支持通配符
13.4 查看进程树
pstree [选项]
-p :显示PID
-u :显示所属用户
13.5 服务管理
服务本质就是进程,但是是运行在后台的,通常都会监听某个接口,等待其他程序的请求,因此我们称之为守护进程
service管理指令
service 服务名 start | stop | restart | reload | status
chkconfig指令
给每个服务的各个运行级别设置自启动/关闭
查看服务 chkconfig -list|grep xxx
chkconfig 服务名 --list
chkconfig -level 5 服务名 on/off
13.6 动态监控进程
top与ps命令很相似。它们都用来显示正在执行的进程。Top与ps最大的不同之处,处于top在执行一段时间可以更新正在运行的进程
top[选项]
-d 秒数 :top命令 每隔几秒更新
-i :使top不显示任何闲置或者僵死进程
-p :通过指定监控进程ID来仅仅监控某个进程的状态
交互操作说明
p :以cpu使用率排序,默认就是此项
m :以内存的使用率排序
n :以pid排序
q :退出top
十四、RPM 与 YUM
14.1 rpm包的管理
一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。他生成具有.RPM扩展名的文件。RPM是RedHat Package Manager 的缩写,类似windows的setup.exe,这一文件格式名称虽然打上了RedHat的标志,但理念是通用的。
rpm -qa :查询所安装的所有rpm软件包
rpm -q 软件包名 :查询软件包是否安装
rpm -qi 软件包名 :查询软件包信息
rpm -e 包名称 :卸载RPM软件包
rpm -e --nodeps 包名称 :强制卸载(不建议使用)
14.2 Yum包的管理
Yum是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。
yum list|grep xx软件列表 :查询yum服务器是否有需要安装的软件
yum install xxx :下载安装
十五、APT与SSH
15.1 APT
apt是Advanced packaging Tool 的简称,是一款安装包管理工具。在Ubuntu下,我们可以使用apt命令安装软件包、删除软件包、清理软件包等。类似于windows的软件管理工具。
1.搜索软件
sudo apt-cache search package_name
其中还可以使用正则表达式 sudo apt-cache search sof* 这样就可以搜索到源上面所有以sof开头的软件包。
2.查看软件包信息
sudo apt-cache show package_name
3.查看软件包依赖关系
sudo apt-cache show depends package_name
4.查看每个软件包的简要信息
sudo apt-cache dump
5.安装软件
sudo apt-get install package_name
6.更新已安装的软件包
sudo apt-get upgrade
7.更新软件包列表
sudo apt-get update
8.卸载一个软件包但是保留相关的配置文件
sudo apt-get remove package_name
9.卸载一个软件包同时删除配置文件
apt-get -purge remove package_name
10.删除软件包的备份
apt-get clean
15.2 SSH
SSH为Secure Shell 的缩写,由IETE的网络工作小组所制定;SSH为建立在应用层和传输层基础上的安全协议。
SSH是目前较可靠,转为远程登陆会话和其他网络服务提供安全性的协议。常用于远程登陆,以及用户之间进行资料拷贝。
使用SSH服务需要安装相应的服务端和客户端,Ubuntu和Centos不同的是,没有默认安装SSHD服务!
sudo apt-get install openssh-server
Linux安装SSH服务端和客户端
service sshd restart
启动sshd服务。会监听端口22
以上是关于Linux学习的主要内容,如果未能解决你的问题,请参考以下文章