文章目录
Linux基础学习总结: https://blog.csdn.net/weixin_44515978/article/details/117105521
1 虚拟机相关
1.1 虚拟机克隆方式
方式一:拷贝(也剪切删除)安装好的文件
方式二:VMware克隆,按照提示进行即可
1.2 虚拟机快照
磁盘“快照”是虚拟机磁盘文件(VMDK)在某个点及时的副本。系统崩溃或系统异常,可以通过使用恢复到快照来保持磁盘文件系统和系统存储。
拍摄快照:虚拟机-> 快照-> 拍摄快照
示例:打开系统,先创建一个快照1
然后创建一个文件夹AA,再创建一个快照2
创建一个文件test.txt,并写入数据
若发现我们不想要这个文件夹以及里面的数据了,我们可以利用快照回到初始状态
恢复之后的快照状态
1.3 利用vmtools可设置Windows与Linux 的共享文件夹(本机)
设置共享文件夹
打开虚拟机设置,在选项里面有个共享文件夹选项
点击添加,在路径中选择你想添加的共享文件夹即可
点击完成即可
在Linux在查看共享文件夹cd /mnt/hgfs/
进入到共享文件夹,此时文件夹没有任何文件,我们创建一个hello.txt文件并在里面写入“hello myshare”,
我们再进入到Windows下的共享文件夹,发现hello.txt文件已经存在,打开文件,里面也是我们刚才写入的数据
2 vim相关
- vim 设置/取消行号
- 命令行模式
set nu; set nonu
- 命令行模式
- 查找:
/关键字
回车即可查找,输入n就是查找下一个- :n 跳转到某行
- 一般模式输入20 shift g
3 关机重启命令
命令 | 说明 |
---|---|
showdown -h now | 立刻关机 h—halt |
showdown -h 1 | 1分钟后关机 |
showdown -r now | 重启 r—reboot |
halt | 关机 |
reboot | 现在重启 |
sync | 把内存的数据同步到磁盘 |
init 0 | 关机 |
init 6 | 重启,这两个命令与Linux运行等级有关 |
不管是重启还是关闭系统,首先要运行sync命令,把数据写入到磁盘
4 用户管理
4.1用户
- 创建新用户
useradd 用户名
:默认该用户家目录在/home/用户名useradd -d 目录 用户名
:给新创建的用户指定家目录
- 设置/修改密码
passwd 用户名
:不带用户名时,默认修改当前登录的用户
- 删除用户
userdel 用户名
:删除用户,但是不删除家目录userdel -r 用户名
:删除用户及其用户家目录(慎重,会删除用户里面的全部文件)
- 查询用户信息指令
id 用户名
- 切换到其他用户
su - 用户名
- 高权限到低权限不需要密码,反之需要
- 查看当前登录用户
whoami
4.2 用户组
相关操作
- 增加:
groupadd 组名
- 删除:
groupdel 组名
- 增加用户时直接加上组:
useradd -g 用户组 用户名
相关配置文件
- /etc/passwd
- 用户的配置文件,记录用户信息
- 用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell
- /etc/group
- 组的配置文件,记录组信息
- 组名:口令:组标识号:组内用户列表
- /etc/shadow
- 口令的配置信息
找回root用户密码
5 时间日期日历相关
- 日期命令
- 显示年月日:
date "+%Y-%m-%d"
用-隔开 - 显示时分秒:
date "+%H:%M:%S"
用:隔开
- 显示年月日:
- 设置系统当前时间
date -s "字符串时间"
date -s "2022-02-11 11:11:11"
- 查看日历
cal [选项]
- 不加选项,显示本月日历
- cal 2021:显示2021年的日历
6 定时任务调度
6.1 任务调度crond
- 功能:进行定时任务调度
- 任务调度:指系统在某个时间执行的特定的命令或程序
- 分类:
1. 系统工作,重复执行某些重要工作,如扫描百度
2. 个别用户任务:执行某些命令或者脚本,比如数据库备份 - 语法:
crontab [选项]
参数 | 说明 |
---|---|
-e | 编辑crontab定时任务 |
-l | 列出当前有哪些crontab任务 |
-r | 删除当前用户所有的crontab任务 |
service crond restart
[重启任务调度]
#设置任务调度例子
设置任务调度的文件/etc/crontab
1. 设置个人任务调度。执行crontab -e
2. 输入任务到调度文件
*/1 * * * * ls -l > ~/Desktop/test.txt
即每小时的每一分钟都执行ls -l > ~/Desktop/test.txt
参数说明
- 第一个*:一小时中的第几分钟 0-59
- 第二个*:一天中的第几个小时 0-23
- 第三个*:一个月在的第几天 1-31
- 第四个*:一年中的第几个月 1-12
- 第五个*:一周当中的星期几 0-7(0,7都代表星期日)
- *代表任何时间
- ,代表不连续的时间
- -代表连续的时间范围
- */n 代表每隔多久执行一次
例子:
*/1 **** date >> /tmp/mydate:每隔一分钟就把当前时间追加到/tmp/mydate中
mysqldump -u root -p密码 数据库 > /home/db.bak 备份数据库
(图片源自2021韩顺平一周学会Linux)
6.2 at 定时任务
命令格式 :at [选项] [时间]
CTRL+D结束at命令的输入
选项 | 说明 |
---|---|
-m | 当指定的任务被完成后,给用户发邮件,即使没有标准输出 |
-I | atq 的别名 |
-d | atrm 的别名 |
-v | 显示任务将被执行的时间 |
-V | 显示版本信息 |
-c | 打印任务的内容到标准输出 |
-q <队列> | 使用指定队列 |
-f <文件> | 使用指定文件读入任务而不是从标准输入读入 |
-t <时间参数> | 以时间参数的形式提交要运行的任务 |
时间:接受模糊形式,例如now,afternoon,today,tomorrow,12pm,03:00,now + 10 hours,04:00 2022-02-02等形式
atq查询定时任务列表
atrm 任务序号 :删除定时任务
- at命令是一次性定时任务,at的守护进程atd会以后台模式运行,检测作业队列来运行
- 默认情况下,atd守护进程每分钟检测一次作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业
- at命令是一次性定时计划任务,执行完一个任务后不再执行此任务了
在使用at命令时,一定要保证atd进程的启动,可以使用ps -ef | grep atd命令来查看
eq:两分钟后执行ls -la 命令,ctrl+d按两次退出
7 ps命令
ps命令是用来查看目前系统中有哪些正在执行,以及它们执行的状况,可以不加任何参数
参数 | 说明 |
---|---|
a | 显示当前终端的所有进程信息 |
u | 以用户的格式显示进程信息 |
x | 显示后台进程运行的参数 |
e | 显示所有进程 |
f | 全格式 |
常用命令:可用管道来过滤我们想要的
ps -aux | grep xxx
ps -ef | grep xxx
- USER:进程执行用户
- PID:进程号
- %CPU:占用CPU百分比
- %MEM:占用物理内存百分比
- VSZ:占用虚拟内存大小(kb)
- RSS:占用物理内存大小(kb)
- TTY:终端名称,缩写
- STAT:运行状态,S-表示睡眠 s-表示该进程是会话的先导进程 N-表示进程拥有比普通优先级更低的优先级 R-表示正在运行 D-表示短暂等待 Z-表示僵尸进程 T-表示被追踪或被停止
- START:进程执行开始时间
- TIME:进程占用CPU的总时间
- COMMAND:启动进程的指令或参数,如果过长会被截断
查看进程树
pstree [选项]
,-p:显示进程的PID;-u:显示进程的所属用户
8 服务(service)管理
8.1 概述
服务(service)本质就是进程,但是运行在后台,通常会监听某个端口,等待其他程序的请求,比如mysqld,sshd等,也被称为守护进程(daemon)。
小知识:
mysql和mysqld的区别
mysql – mysql is a command-line client for executing SQL statements interactively or in batch mode.
mysqld – mysqld is the MySQL server.
就是说:
mysql是一个命令行程序。
mysqld是一个服务。
Linux系统里一般服务都是以的结尾的,比如httpd,mysqld等。
Linux系统里一般服务都是以的结尾的,比如httpd,mysqld等。
所以在开启服务时也要用服务的名字,这样:
systemctl start mysqld.service
service stop mysqld
d的全拼是daemon,也就是守护程序的意思,常驻与后台。
同理的ssh与sshd也一样,可以理解为一个是客户端,一个是服务端。
ssh_config的客户端配置文件,sshd_config是服务端配置文件
参考:https://blog.csdn.net/wouijvziqy/article/details/117030493
8.2 service管理指令
service 服务名 [start | stop | restart | reload | status]
;- service指令管理的服务在/etc/init.d 中查看:
ls -l /etc/init.d
8.3 linux系统运行级别
运行级别 | 说明 |
---|---|
0 | 系统停机状态,默认级别不能设置为0,否则不能正常启动 |
1 | 单用户工作状态,root权限,用于系统维护,禁止远程登录(可用于找回丢失密码) |
2 | 多用户状态没有网络服务(没有NFS),不支持网络 |
3 | 完全的多用户状态有网络服务(有NFS),无界面,登陆后进入控制台命令行模式 |
4 | 系统未使用,保留 |
5 | X11控制台,登陆后进入图形GUI模式 |
6 | 系统正常关闭并重启,默认级别不能设置为6,否则不能正常启动 |
常用为3,5,可指定默认运行级别
使用命令: init [0123456]
查看当前运行级别:systemctl get-default
设置允许级别:systemctl set-default multi-user.target(运行级别3)/graphical.target(允许级别5)
8.4 Linux开机流程说明:
开机->BIOS->/boot->systemd进程1->确定运行级别->启动运行级对应的服务
- 首先Linux先通过自检,检查硬件设备有没有故障
- 若有多块启动盘,需要在BIOS中选择启动磁盘
- 启动MBR在的bootloader引导程序
- 加载内核文件
- 执行所以进程的父进程,最初的进程systemd
- 确定运行级别,启动相关服务
在linux的启动流程中,加载内核文件时关键文件
- kernel文件
- initrd文件
8.5 systemctl管理指令
- 基本语法:
systemctl [start | stop | restart | status] 服务名
- systemctl指令管理的服务在
/usr/lib/systemd/system
查看 - systemctl设置服务的自启动状态
systemctl list-unit-files [ | grep 服务名]
:查看服务器开机启动状态,grep可以进行过滤systemctl enable 服务名
:设置服务开机启动systemctl disable 服务名
:关闭服务开机启动systemctl is-enable 服务名
:查询某个服务是否是自启动的
注意:
关闭或启动某服务后立即生效,这种方式只是临时生效,当系统重启后还是回归以前对这个服务的设置状态,若希望某个服务自启动或关闭永久生效,则需要使用enable/disable来设置
8.6 firewall指令
打开或关闭指定端口
- 安装firewall-cmd
sudo apt-get install firewalld
- 开放端口
firewall-cmd --add-port=端口号/协议 --permanent
firewall-cmd --reload
(重载才能生效)
- 查看开放的端口
firewall-cmd --list-all
- 关闭端口
firewall-cmd --remove-port=端口号/协议 --permanent
firewall-cmd --reload
- 查询端口是否开放
firewall-cmd --query-port=端口号/协议
9 动态监控进程
top与ps很相似,都用来显示正在执行的进程,top与ps最大的不同之处在于top在执行一段时间可以更新正在运行的进程
top [选项]
- -d秒数 指定top命令每隔几秒更新,默认3s;十秒刷新:
top -d 10
- -i 使top不显示任何闲置或者僵尸进程
- -p 通过指定监控进程ID来仅仅监控某个进程的状态
交互操作
操作 | 功能 |
---|---|
P | 以CPU使用率排序,默认为此选项 |
M | 以内存使用率排序 |
N | 以PID排序 |
q | 退出 |
- 监视特定用户
- 执行top命令,然后输入u后回车,再输入用户名即可
- 终止指定进程
- 执行top命令,然后输入k后回车,再输入进程ID即可
10 监控网络状态
命令:netstat [选项]
-
an 按一定顺序排列输出
-
-p 显示哪个进程在调用
-
。。。
-
Proto:协议;
-
Local Address:本地地址,相当于Linux地址(若为服务器)
-
Foreign Address:外部地址(即为客户端)
11 安装的deb包
说明 | 操作 |
---|---|
安装deb软件包 | dpkg -i xxx.deb |
删除软件包 | dpkg -r xxx.deb |
连同配置文件一起删除 | dpkg -r --purge xxx.deb |
查看软件包信息 | dpkg -info xxx.deb |
查看文件拷贝详情 | dpkg -L xxx.deb |
查看系统中已安装软件包信息 | dpkg -l |
重新配置软件包 | dpkg-reconfigure xxx |
12 APT软件包管理
12.1 相关命令
更新:sudo apt-get update
安装:sudo apt-get install package
删除:sudo apt-get remove package
获取包的相关信息:sudo apt-cache show package
下载该包源码:sudo apt-get source package
12.2 APT软件管理原理
vim /etc/apt/sources.list 可发现里面的服务器地址为美国的
12.3 更改系统镜像源
- 进入清华软件镜像源网站(其他也可以),找到Ubuntu
清华开源软件镜像源:https://mirrors.tuna.tsinghua.edu.cn/
2. 选择合适的版本,把 /etc/apt/sources.list中的内容替换为方框内的内容(建议先把 /etc/apt/sources.list 拷贝一份,以防出错,或者设置快照)
3. 更新源:sudo apt-get update
13 磁盘管理
13.1 设备文件命名规则
在Linux系统环境下,设备均被视为文件,一般处于/dev文件夹下,对不同的设备类型,其对应的文件名不相同。
其中,IDE硬盘根据其插入的接口不同,分为/dev/hda - /dev/hdd四个名字,而SCSI/SATA硬盘则根据系统检测到的硬盘的顺序分为 /dev/sda - /dev/sdp 等名称。
不同的硬件设备会根据其接入情况拥有不同的文件名,进一步的,同一硬件设备中可能存在多个不同的分区,系统通过在设备文件名之后加入数字后缀来进行区分(在后续表述中,一般认为一个分区对应一个文件系统)。以SCSI硬盘为例,其主分区的命名为 /dev/sda1 - /dev/sda4(注意这四个编号只能被主分区和拓展分区使用),而逻辑分区的命名为 /dev/sda5 - /dev/sda15.
Linux磁盘管理常用三个命令为df、du和fdisk。
- df:列出文件系统的整体磁盘使用量
- du:检查磁盘空间使用量
- fdisk:用于磁盘分区
13.2 df命令
df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
语法:df -【参数】 【目录或文件名】
参数 | 说明 |
---|---|
-a | 列出所有的文件系统,包括系统特有的 /proc 等文件系统; |
-k | 以 KBytes 的容量显示各文件系统; |
-m | 以 MBytes 的容量显示各文件系统; |
-h | 以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示; |
-H | 以 M=1000K 取代 M=1024K 的进位方式; |
-T | 显示文件系统类型, 连同该 partition 的 filesystem 名称 (例如 ext3) 也列出; |
-i | 不用硬盘容量,而以 inode 的数量来显示 |
13.3 du命令
Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的
语法:du -【参数】 【目录或文件名】
参数 | 说明 |
---|---|
-a | 列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。 |
-h | 以人们较易读的容量格式 (G/M) 显示; |
-s | 列出总量而已,而不列出每个各别的目录占用容量; |
-S | 不包括子目录下的总计,与 -s 有点差别。 |
-k | 以 KBytes 列出容量显示; |
-m | 以 MBytes 列出容量显示; |
13.4 fdisk命令
fdisk 是 Linux 的磁盘分区表操作工具。
fdisk [-l] 装置名称
选项与参数:
- -l :输出后面接的装置所有的分区内容。若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的分区均列出来。
注意,fdisk以设备名称作为参数,而不是文件系统名称,故而参数应该为/dev/sd[a - p]和/dev/hd[a - d]的形式。可通过df命令获取对应的设备名称的信息,如某文件系统名为/dev/sda8,则其所在的设备的名称为/dev/sda.
进入fdisk的交互界面后可根据提示完成获取磁盘信息、新增/删除一个分区等操作。对磁盘的操作首先位于内存中,只有通过 w 退出时才会将修改真正执行,相应的使用 q 退出则不会做修改。请确定操作无误后再执行。
13.5 mkfs
完成系统的格式化操作
mkfs -t 格式名 设备文件名
mkfs命令会根据其参数调用实际执行的格式化工具,将文件系统格式化
在键入 mkfs 后按两下[tab]键,可以看到系统支持的格式化的类型。
13.6 mount
将磁盘分区与固定的目录建立联系,使得该目录成为进入该分区的入口
参数 | 说明 |
---|---|
-a | 将记录在/etc/fstab中而未挂载的磁盘进行挂载 |
-l | 显示目前的挂载信息,只输入命令mount效果一样-t 指定文件系统类型,包括 ext2/3、vfat、iso9660(光盘格式)、nfs、cifs等 |
-L “xx” | 使用文件系统卷标名而不是文件系统名(如/dev/sda1)进行挂载,好处在于文件系统名可能随接入系统的接口的变化而改变 |
–bind | 将一个目录挂载到另一个目录上,实现的效果类似于符号连接 |
-o | 可接一些挂载时的一些参数 |
-o loop | 直接将当前文件系统上的文件以loop设备进行挂载,如下载的iso镜像文件,不需要先刻录,直接通过 -o loop xx.iso 将其挂载,即可对其进行操作 |
对应的文件系统的卸载可以通过umount命令,其参数可以为文件系统名(/dev/sdax)、挂载点名(~/test)等,均可完成卸载操作