Linux基础操作(补充)


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 更改系统镜像源

  1. 进入清华软件镜像源网站(其他也可以),找到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)等,均可完成卸载操作

Guess you like

Origin blog.csdn.net/weixin_44515978/article/details/119969135