Linux总结
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Linux总结,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含17436字,纯文字阅读大概需要25分钟。
内容图文
Linux总结
1. 绪论
1.1 Linux学习流程
第一阶段:基本操作命令,包括文件操作命令(rm, mkdir, chmod, chown等),编辑工具使用(vim),Linux用户管理等
第二阶段:Linux的各种配置(环境变量配置,网络配置,服务配置)
第三阶段:Linux下如何搭建对应语言的开发环境(大数据,python等)
第四阶段:编写shell脚本,对服务器进行维护
1.2 虚拟机及系统的安装
VM傻瓜式安装此处不再讲解
Linux系统的安装(以CentOS为例)
(1)选择【创建行的虚拟机】
新手可以直接选择【典型】
选择【稍后安装系统】
选择【Linux】和【CentOS】
自定义【虚拟机名称】和【安装位置】,安装位置一般选择软件安装目录下
以上步骤是安装配置虚拟机,接下来安装CentOS系统
点击【浏览】浏览CentOS系统镜像
中间省略若干步
下面按需求选择
1.3 安装vmtools
vmtools安装后,可以让我们在windows下更好的管理虚拟机
- 在windows和linux之间可以直接粘贴命令
- 可以设置windows和centos的共享文件夹
安装vmtools步骤
- 进入centos
- 点击vm菜单的【虚拟机】> 【安装vmware tools】
- centOS会出现一个vm的安装包
- 右键解压,得到安装文件
- 进入该解压文件,该文件在root/桌面/vmware-tools-distrib/下
- 安装./wmware-install.pl
- 全部使用默认设置即可
- 需要reboot重新启动即可生效
设置共享文件夹
为了方便,可以设置一个共享文件夹,比如:d:/share,但在实际公司开发中,文件的上传下载是需要用远程方式实现的
具体步骤:
- 虚拟机>设置>选项>共享文件夹,如图设置即可;注意设置选项为always enable,这样可以读了
- windows 和centors可以共享d:/share目录,可以读取文件
如何在linux上找到刚才设置的文件夹??
nmt>hgfs>myShare
2. Linux基本操作
2.1 linux的目录结构
linux中目录结构入下图所示,是树状形状,最上层是根目录/
,然后依次向下扩展
各目录的作用如下:
/bin(/usr/bin、usr/local/bin)
是binary的缩写,存放常用的命令/sbin
s表示super user,存放系统管理员使用的系统管理程序/home
存放普通用户的主目录,在linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号名命名的/root
该目录为系统管理员,也称为超级权限者的用户目录/lib
系统开机所需的最基本的动态链接共享库/etc
所有系统管理所需的配置文件和子目录my.conf
/usr
用户的应用程序和文件都放在该文件下,类似于windows中program files目录/boot
存放启动linux时使用的一些核心文件,包括一些链接文件及镜像文件/dev
把所有硬件用文件形式存储media
linux会自动识别一些设备,如U盘,光驱等;识别后,linux会把识别的设备挂载到该目录下/mnt
用户临时挂载别的文件系统,可以将外部的存储挂载在mnt上,然后进入该目录就可以查看里面的内容了/usr/local
软件安装的安装目录/var
该目录中存放着不断扩充的东西,习惯将经常修改的目录放在这个目录下,包括各种日志文件
2.2 远程登陆到Linux服务器
工具(软件)
- 远程登陆到Linux的软件:Xshell5
- 上传和下载文件软件:XFtp5
Xshell5的安装
注意:若希望安装好Xshell5后可以远程访问Linux系统,必须要启用linux系统的SSHD服务,该服务会监听22号端口,使用setup>系统服务
查看是否有打开此服务,空格键打开/关闭服务,带*号的表示已经打开该服务。
在官网下载学习免费版
Xshell的使用
(1)查看linux系统的ip使用ifconfig
命令
(2)在Xshell中选择【文件】>【新建】,配置如下
(3)链接
双击linuxService即可链接,后面输入linux系统的用户名和密码即可登陆成功
链接成功如下
远程上传下载软件Xftp5安装使用
打开软件【文件】>【新建】然后配置如下
如果Xftp出现乱码,则按如下设置
2.3 vi和vim编辑器的使用
vi是linux系统内置的文本编辑器,vim是vi的增强版,具有程序编辑能力,具有更丰富的功能
vi和vim的三种模式
- 正常模式(默认模式)
以vim打开一个文件就进入一般模式了,可以使用上下左右按键来移动光标等 - 插入/编辑模式
在该模式下,可以输入内容,按下i,I, o, O, a, A, r, R
等任何一个字母后才会进入编辑模式,一般是按i
- 命令行模式
该模式下可以提供相关指令完成读取、存盘、替换、离开vim、显示行号等操作。
快捷键的使用
(1)拷贝当前行 yy
,拷贝当前向下的5行5yy
,粘贴p
,注意这些操作都在一般模式下进行
(2)删除当前行dd
,删除当前向下的5行5dd
(3)文件中查找某个单词,命令行下/关键字
回车开始查找,按n
就是查找下一个
(4)设置文件的行号,取消文件的行号,命令行下:set nu
和:set nonu
(5)编辑文件时,快速到达文件末尾G
,快速到达首行gg
,在正常模式下
(6)撤销操作,正常模式下u
(7)直接跳转到文件的第20行:首先:set nu
显示行号,然后输入20这个数,最后输入shift+g
2.4 开机、重启、用户登陆注销
关机
shutdown -h now
立即关机shutdown -h 1
1分钟后关机shutdown -r now
立即重启halt
关机reboot
重启sync
把内存的数据保存到磁盘上,即保存数据,在关机或者重启前应先执行该指令,进行保存数据
用户登陆和注销
登陆时应该尽量少用root账号登陆,因为它是系统管理员,权限很大,避免误操作,可以用普通账户登陆,在登陆后使用su-用户名
命令来切换成系统管理员身份;在命令行中输入logout
即可注销用户(退出服务器连接)
2.5 用户管理
添加用户
(1)useradd 用户名
当用户创建成功时,会自动创建和用户名同名的家目录;也可以通过useradd -d 指定目录 用户名
给新的用户指定目录
(2)passwd 用户名
给用户添加/修改密码
删除用户
userdel 用户名
删除用户,保留家目录(一般建议使用该方式)
userdel -r 用户名
删除用户同时删除家目录
查询用户信息
id 用户名
切换用户
su - 用户名
当前用户权限不够,可以使用su -
指令,切换到高权限用户,比如su - root
, 若想回到原先的用户使用 exit
指令即可;从权限高的用户到权限低的用户不需要密码,反之则需要
查看当前用户 whoami/who am i
用户组
类似于角色,系统可以对有共性的多个用户统一管理
groupadd 组名
创建一个用户组
groupdel 组名
删除组
useradd -g 用户组 用户名
增加用户时直接指定组
usermod -g 用户组 用户名
修改用户所在组
2.6 实用指令
linux系统运行级别
init [012356]
切换到指定的运行级别
文件 /etc/inittab
中记录相关的级别信息
若忘记root密码,如何解决?
进入到单用户模式中,然后修改密码,因为单用户模式下root不需要登陆密码即可登陆
帮助指令
当我们对某个指令不熟悉时,可以使用linux提供的帮助指令来了解该指令的使用方法
man 命令或配置文件
如man ls
查看ls命令的介绍help 指令
如help cd
文件目录类
pwd
查看当前工作目录mkdir 目录
创建目录;-p
创建多级目录,如mkdir -p /home/student/fangcheng
(student和fangcheng都不存在)rmdir 要删除的空目录
删除空目录。注意是空目录,若非空不能上删除成功;rm -rf 非空目录
删除非空目录touch 文件名
创建一个空文件cp source dest
将source文件拷贝到dest目录中;-r
表示递归复制整个文件夹,如cp -r /home/fangcheng /root/cheng/
将fangcheng文件夹拷贝到cheng文件夹中rm dir
删除文件或目录;-r
删除整个文件夹,-f
强制删除不提示mv oldName newName
ormv file newDir
移动文件或者文件重命名;cat fileName
查看文件内容;-n
显示行号more fileName
分页显示,按空格键显示下一页;例如:cat fileName | more
打开文件并分页显示
more的快捷键:
操作 | 功能说明 |
---|---|
Enter | 向下翻一行 |
空格 | 向下翻一页 |
q | 退出 |
Ctrl+f | 向下滚动一屏 |
Ctrl+b | 向上滚动一屏 |
= | 输出当前行号 |
:f | 输出文件名和当前的行号 |
less fileName
分页查看文件内容,比more指令功能强大;less在显示文件内容时并非一次将整个文件加载后才显示,而是根据显示需要加载内容,对于大型文件具有较高效率
less快捷键
操作 | 功能介绍 |
---|---|
空格键 | 下一页 |
pageup/pagedown | 上/下翻页 |
q | 退出 |
-
>
输出重定向;>>
追加
ls -l > a.txt
将列表的内容写入到a.txt中(覆盖写)
ls -al >> aa.txt
列表的内容追加到aa.txt的末尾
cat file1 > file2
将文件1的内容覆盖到文件2 -
echo content
输出内容到控制台,类似print ,如echo "hello, world"
-
head fileName
显示文件前10行
head -n 5 fileName
显示文件前5行 -
tail fileName
显示文件后面10行;
tail -n 5 fileName
显示文件后面5行;
tail -f fileName
实时追踪该文档的所有更新(很重要) -
history
查看已经执行的历史指令
时间日期类 -
date
显示当前时间
date "+%Y"
显示当前年份
date "+%m"
月份
date "+%d"
显示那一天
date "+%Y-%m-%d %H:%M:%S"
显示年月日时分秒
date -s 字符串时间
设置系统时间, 如date -s "2018-10-10 11:22:22"
-
cal
查看当前日历;cal 2021
查看2021年的日历
搜索查找类
find dir 选项
在指定目录下按要求查找,如:find /home -name aa.txt
在/home目录下按文件名查找aa.txt;find /home -user root
在/home目录下按所有者查找文件;find /home -size +20M
查找大于20M的文件(-是小于,不加符号表示等于)locate 搜索文件
可以快速定位路径,第一次运行前需要用updatedb
指令创建locate数据库
grep [选项] 查找内容 源文件
在源文件中查找指定内容
cat aa.txt | grep yes
选项 | 功能 |
---|---|
-n | 显示匹配行及行号 |
-i | 忽略大小写 |
压缩和解压缩
-
gzip file
将指定文件压缩为*.gz文件,注意源文件不会保留,会被替换
gunzip file.gz
解压文件 -
zip [选项] xxx.zip 要压缩的文件或目录
压缩文件,-r
递归压缩,即压缩目录
unzip [选项] xxx.zip
解压文件 ,-d
指定解压后的文件存放目录(这两个命令常用) -
tar [选项] xxx.tar.gz 打包的内容
选项 | 功能 |
---|---|
-c | 产生.tar打包文件 |
-v | 显示详细信息 |
-f | 指定压缩后的文件名 |
-z | 打包同时压缩 |
-x | 解包.tar文件 |
示例:
tar -zcvf a.tar.gz a1.txt a2.txt
将a1和a2压缩打包到a.tar.gz
tar -zcvf myhome.tar.gz /home/
将/home目录下的文件打包到myhome.tar.gz中
tar -zxvf a.tar.gz
解压到当前目录
tar -zxvf myhome.tar.gz -C /opt
将myhome解压到opt下
2.7 组管理和权限管理
文件的所有者
谁创建了文件,所有者就为谁(后期改变除外)
chown 用户名 文件名
修改文件所有者
chown newowner:newgroup file
改变用户的所有者和所有组;-R
是如果是目录,则是其下所有子文件或目录递归生效
chgrp 组名 文件名
修改文件所在组;-R
更改所有文件或目录
usermod -g 组名 用户名
改变用户所在组
权限管理
rwx作用在文件 | rwx作用在目录 | |
---|---|---|
w | 可写但不代表可删除,删除文件的前提是对文件所在目录具有写权限 | 可修改,创建/删除/重命名 |
x | 可以被执行 | 可进入该目录 |
r | 可读 | 可读取该目录内容 ls查看该目录内容 |
注意 可用数字表示rwx,r=4, w= 2, x = 1
更改权限chmod
(1)+、-、=来变更权限
u:所有者 g:所有组 o:其他人 a:所有人(u,g,o的总和)
chmod u=rwx,g=rx,o=x 文件/目录名
chmod o+w 文件/目录名
其他人加上一个w的权限chmod a-x 文件/目录名
所有人都减去x的权限
(2)通过数字变更权限
r = 4, w = 2, x = 1, 则rwx = 4+2+1=7
chmod u=rwx, g=rx, o=x 文件目录名
就相当于chmod 751 文件目录名
2.8 定时任务调度
任务调度:在系统某个时间执行特定命令或者程序
任务调度分类:1. 系统工作:有些重要的工作必须周而复始的执行,如病毒扫描等。2. 个别用户可能希望执行某些程序,比如对mysql数据库的备份
使用 crontab
命令进行任务设置
crontab [选项]
选项 | 功能 |
---|---|
-e | 编辑crontab定时任务 |
-l | 查询crontab任务 |
-r | 删除当前用户的所有crontab任务 |
例1
每分钟执行 ls -l /etc/>/tmp/to.txt
(1)设置个人任务调度,执行 crontab -e
命令
(2)输入任务调度文件 */1 * * * * ls -l /etc/ >> /tmp/to.txt
注意:如果是简单的任务,不需要写脚本,直接在crontab中加入任务即可;对于复杂的任务,需要写脚本shell
项目 | 含义 | 范围 |
---|---|---|
第一个* | 一小时当中第几分钟 | 0-59 |
第二个* | 一天当中第几个小时 | 0-23 |
第三个* | 一个月当中第几天 | 1-31 |
第四个* | 一年中第几个月 | 1-12 |
第五个* | 一周中星期几 | 0-7(0和7都代表周日) |
参数中特殊符号说明
特殊符号 | 含义 |
---|---|
* | 代表任何时间。比如第一个* 就代表一小时中每分钟都执行一次 |
, | 代表不连续的时间。比如0 8,12,16 * * * ,就代表在每天的8点0分,12点0分,16点0分都执行一次命令 |
- | 代表连续的时间范围。比如0 5 * * 1-6 代笔在周一到周六的凌晨5点0分执行命令 |
*/n | 代表每隔多久执行一次。比如*/10 * * * * 代表每隔10分钟就执行一次命令 |
例2
每隔一分钟就将当前的日期信息追加到 /tmp/mydate
文件中
1)先编写一个文件 /home/mytask1.sh,输入内容为date >> /tmp/mydate
2)给mytask1.sh一个可执行的权限
chmod 744 /home/mytask1.sh
3) crontab -e
4)*/1 * * * * /home/mytask1.sh
crontab 相关指令
crontab -r
终止任务调度crontab -l
列出当前有哪些任务调度service crond restart
重启任务调度
2.9 磁盘分区、挂载
分区的方式
1)mbr分区
最多支持四个主分区;系统只能安装在主分区;扩展分区要占一个主分区;MBR最大只支持2TB,但拥有最好的兼容性。
2)GTP分区
支持无限个主分区(但操作系统可能限制,比如windows下最多128个分区);最大支持18EB的大容量(EB=1024PB, PB=1024TB);windows7 64位以后支持GTP
使用lsblk -f
或者 lsblk
查看当前系统分区情况
例1
给linux系统增加一块新硬盘,并挂载到/home/newdisk下
步骤:
(1)虚拟机添加硬盘
虚拟机 - 设置 - 硬盘 - 添加 - 硬盘 - 下一步 - SCSI - 下一步 - 创建新虚拟磁盘 - 下一步 - 最大磁盘大小2GB - 下一步
重启虚拟机后可以看到如下结果
(2)分区
(3)格式化
(4)挂载
先创建一个目录 mkdir /home/newdisk
然后挂载 mount /dev/sdb1 /home/newdisk
注意这种方式是临时挂载,当机器重启后,这种挂载关系将消失。
(5)设置可以自动挂载(永久挂载)
使用 mount -a
使得上面的改变生效
注意1: 若重启后不成功,将上面橙色方框中的 xfs
改成 ext4
注意2: 若想卸载sdb1和/home/newdisk之间的挂载关系可以使用umount命令:umount /dev/sdb1
2.10 磁盘情况查询
df -h [目录]
查询系统整体磁盘使用情况du -h
查询指定目录所占用的空间, 默认为当前目录
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
-- max-depth=1 子目录的深度
-c 列出明细的同时,增加汇总值
例 1
查询 /opt 目录的磁盘占用情况,深度为1
du -ach --max-depth=1 /opt
- 统计指定目录下(/home)文件个数:
ls -l /home | grep "^-" | wc -l
- 统计/home目录下目录的个数:
ls -l /home | grep "^d" | wc -l
- 统计/home文件夹下的文件个数,包括子文件夹里的文件:
ls -lR /home | grep "^-" | wc -l
,增加参数R来递归查询
- 统计/home文件夹下目录的个数,包括子文件夹里的目录:
ls -lR /home | grep "^d" | wc -l
- 以树状显示目录结构
tree [目录]
若无此指令使用yum install tree
安装
2.11 网络配置
-
自动连接
特点:linux启动后自动获取ip每次自动获取的ip地址可能不同 -
指定固定的 IP 地址
直接修改配置文件来指定IP,并可以连接到外网,编辑vim /etc/sysconfig/network-scripts/ifcfg-eth0
打开后最初配置如下:
经过修改后得到如下配置
配置更改完毕,使用 service network restart
重启网络服务即可,查看设置发现已更改成手动静态方式
2.12 进程管理
查看进程
使用ps
指令查看系统执行的进程, 一般使用方式是ps -aux
ps -a
显示当前终端的所有进程信息ps -u
以用户的格式显示进程信息ps -x
显示后台进程运行的参数
ps -ef
可以查看父进程ppid
终止进程
kill [选项] 进程号
通过进程号杀死进程killall 进程名称
通过进程名称杀死进程,支持通配符,这在系统因负载过大而变得很慢时有用
常用选项是 -9
表示强迫进程立即停止
pstree [选项]
以树状直观的查看进程信息
-p
显示进程的PID
-u
显示进程的所属用户
服务管理
服务本质是进程,但是运行在后台,通常会监听某个端口,等待其他程序的的请求,比如mysql, sshd等,因此又称为守护进程
service管理指令
service 服务名 [start stop restart reload status]
注意在centOS7.0后不再使用service,而是systemctl
例1
查看当前防火墙的状态,关闭防火墙和重启防火墙
service firewalld status
service firewalld stop
service firewalld start
注意,上面的方法只是临时生效,当重启系统后,还是会回归以前对服务的设置,如果希望设置某个服务自启动或关闭永久生效,要使用chkconfig
指令,该指令可以给每个服务的各个运行级别设置自启动和关闭
chkconfig --list
查看所有服务
chkconfig 服务名 --list
查看指定服务名的状态chkconfig --level 5 服务名 on/off
设置指定服务在某个等级下的自启动情;如chkconfig --level 5 sshd off
是将sshd服务在5级别下不自启动
注意:chkconfig
重新设置服务后自启动或关闭需要重启后生效
2.13 动态监控进程
top
和 ps
命令很相似,都是用来显示正在执行的进程。TOP和ps最大不同之处在于top在执行一段时间可以更新正在运行的进程
top [选项]
-d 秒数
指定top命令每隔几秒更新,默认是3秒
-i
不显示任何闲置或僵尸进程
-p
监控指定进程号进程状态
交互操作说明
操作 | 功能 |
---|---|
P | 以CPU使用率排序 |
M | 以内存使用率排序 |
N | 以PID排序 |
q | 退出top |
例1
top
查看进程运行情况
-
top -u [用户名]
查看指定用户的进程运行情况;也可先输入top
指令,然后输入u
再输入用户名 -
先输入
top
指令,然后输入k
再输入指定进程号,杀死指定进程 -
top -d 10
指定10秒刷新一次 -
netstat -anp
查看网络情况
-an 按一定顺序排列输出
-p 显示哪个进程在调用
2.14 RPM包管理
一种用于互联网下载包的打包安装工具,类似于windows中的setup.exe,其后缀为.rpm
rpm -qa | grep xxx
查询已安装的rpm列表;rpm -qa | grep firefox
查看当前linux系统是否安装了火狐浏览器
rpm -qi [软件名]
查询软件包信息rpm -ql [软件名]
查看软件安装了哪些文件及安装地址rpm -qf [文件名]
查看指定文件属于哪个安装包rpm -e rpm包的名称
删除指定的rpm包(卸载软件)rpm -e --nodeps 包名
强制卸载(有风险)rpm -ivh rpm包全路径名称
i=install安装,v=verbose提示,h=hash进度条
例1 安装firefox浏览器
(1)将镜像文件挂载到/media下:mount /dev/cdrom /media
(2)进入/media/Package,其中有很多rpm安装包,找到firefox的rpm安装包,将其拷贝出来:cp firefox-68.5.0-2.el7.centos.x86_64.rpm /opt/
(3)进入 /opt目录,然后安装:rpm -ivh firefox-68.5.0-2.el7.centos.x86_64.rpm
2.15 yum包管理
Yum包能够从指定的服务器自动下载RPM包并安装,可以自动处理依赖关系,并一次安装所有依赖的包
yum list | grep 软件名
查询yum服务器是否有要安装的软件yum install xxx
下载安装软件
例1 使用yum方式安装firefox
(1)使用yum list | grep firefox
查询yum服务器上是否有该安装包
(2)yum install firefox
安装firefox
3. Linux&Python[Ubuntu]
python开发一般选择ubuntu,它和Centos都是基于 GNU linux内核开发的。各种指令基本一样,只是界面和预安装软件有所差别, Ubuntu下载
3.1 root用户设置
安装ubuntu成功后,都是普通用户,并没有最高权限,如果需要使用root权限的时候,通常在命令前面加上 sudo
.
给root用户设置密码
(1)输入sudo passwd
命令,输入一般用户密码并设定root用户密码
(2)设定root密码成功后,输入 su 命令,并输入root密码,就可以切换到root了,提示符 $
表示一般用户, 提示符 #
表示root用户
(3)输入 exit
命令,退出root用户返回一般用户
3.2 apt 软件管理
在Ubuntu下,可以使用apt命令来对软件包安装、删除、清理等
sudo apt-get update
更新源sudo apt-get install package
安装包sudo apt-get remove package
删除包sudo apt-cache show package
获取包相关信息,如说明、大小、版本等sudo apt-get source package
下载包的源码sudo apt-get install package --reinstall
重新安装包
更新Ubuntu软件下载地址
国内镜像地址 https://mirrors.tuna.tsinghua.edu.cn
查看Ubuntu版本
选择对应版本
备份sources.list:cp sources.list sources.list.bak
并将原先文件清空
将源改成清华的源(将图2中的代码复制到sources.list中)
最后使用 sudo apt-get update
更新源
3.3 远程登陆Ubuntu
使用SSH服务需要安装相应的服务器和客户端;如果A机器想被B机器远程控制,那么A机器需要安装SSH服务器,B机器需要安装SSH客户端
和CentOS不一样,Ubuntu默认没有安装SSHD服务,因此我们不能进行远程登陆
安装SSH和启用该服务
sudo apt-get install openssh-server
在当前Linux系统上安装SSH服务端和客户端service sshd restart
启动sshd服务,会监听端口22- 使用
netstat -anp | more
查看22端口是否被监听
因为22端口已经被监听,所以可以使用xshell远程登陆,接下来使用xshell进行登陆
从linux系统客户机远程登陆到linux系统服务机
- 首先在客户机上安装
openssh-server
ssh 用户名@IP
如ssh orangerfun@192.168.188.130
使用ssh访问,如果访问出现错误,可查看是否有该文件~/.ssh/known_ssh
尝试删除该文件解决- 登出命令
exit
或logout
4. shell 编程
todo ....
5. 参考
B站尚硅谷视频
内容总结
以上是互联网集市为您收集整理的Linux总结全部内容,希望文章能够帮你解决Linux总结所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。