Linux笔记&Linux常用指令合集

1.Linux文件结构

  1. linux的目录中有且只有一个根目录"/"
  2. linux的各个目录存放的内容是规划好,不能乱放文件。
  3. linux是以文件的形式管理我们的设备,因此linux系统,一切皆为文件。
  • /bin:Binary的缩写,用来存放常用命令的,比如复制、粘贴
  • /dev:用来存放设备的,比如cpu、disk,类似于windows的设备管理器
  • /etc:存放配置文件
  • /home:用于存放普通用户的主目录,其子目录名是用用户的账号命名的
  • /lib:动态库,存放so文件
  • /media:挂载多媒体设备,比如usb、软盘之类的
  • /mnt:用于让用户临时挂载别的文件系统的,例如在虚拟机中,我们可以设置一个windows和linux的共享文件夹,这个文件夹在linux中就被挂载在mnt中
  • /opt:存放一些要安装的软件
  • /proc:这是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息。
  • /srv:service的缩写,该目录存放一些服务启动之后需要提取的数据。
  • /root:系统管理员的用户主目录
  • /sbin:Super User的意思,存放的是自由系统管理员使用的系统管理程序
  • /selinux:SELinux是一种安全子系统,它能控制程序只能访问特定文件
  • /sys:系统文件夹
  • /tmp:用来存放临时文件的
  • /usr:用户文件,一般安装的文件或应用程序放在这
  • /usr/local:这是另一个给主机额外安装软件所安装的目录。一般是通过编译原码方式安装的程序
  • /var:存放一些不断扩充的东西,或者说经常被修改的东西,比如存放一些诸如日志之类的东西
  • /boot:存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件

2.远程登录到Linux的软件XShell

如果希望安装好XShell后就可以远程访问Linux系统的话,那么有一个前提是,Linux启动了sshd服务,该服务会监听22号端口

  1. 首先,在Linux中执行ifconfig,得到你的Linux服务器所在的端口
    在这里插入图片描述
  2. 获得端口后,打开我们安装的XShell,新建连接,将我们获得的ip地址填入主机那一栏,协议选择SSH协议,端口号选择22号,
    在这里插入图片描述
  3. 然后填写用户名,密码记住,这个用户是Linux的用户名,我这里直接使用的root,管理员登陆,配置完后点击连接即可连接到Linux了
    在这里插入图片描述

3.远程上传下载文件的软件Xftp

Xftp是一个基于Windows平台的功能强大的SFTP、FTP文件传输软件,使用了Xftp后,Windows用户能够安全地在UNIX/Linux和Windows PC之间传输文件

  1. 同XShell一样,在Linux的sshd端口开放的情况下打开Xftp软件,新建连接,主机栏填写你的服务器ip地址,协议选用SFTP协议,端口号选择22,帐号密码自定义
    在这里插入图片描述
  2. 切换到选项栏,将编码方式改为utf-8,否则可能出现乱码问题

在这里插入图片描述

4.vi和vim编辑器

  所有的 Linux系统都会内建vi 文本编辑器。
  Vim具有程序编辑的能力,可以看做是Vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

4.1.正常模式

  在正常模式下,我们可以使用快捷键。
  以vim打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中,你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容,也可以使用『复制、粘贴』来处理你的文件数据。

4.2.插入模式/编辑模式

  在模式下,程序员可以输入内容。
  按下 i,I, o, O, a,A, r,R等任何一个字母之后才会进入编辑模式,一般来说按i即可

4.3.命令行模式

  在这个模式当中,可以提供你相关指令,完成读取、存盘、替换、离开 vim 、显示行号等的动作则是在此模式中达成的!
:q:退出
:q!:强制退出
:wq:写入并退出
:w:写入

4.4.例子

vim hello.java进入vim的正常模式并创建hello.java文件,按i进入插入模式,编辑好内容后按esc进入到命令行模式,输入:wq写入并退出即Write And Quit缩写,再次输入vim hello.java进入文件发现修改成功,输入:q!强制退出

4.5.vim常用快捷键

  1. 拷贝当前行 yy,拷贝当前行向下的5行5yy,粘贴p
  2. 删除当前行dd,删除当前行向下的5行5dd
  3. 在文件中查找某个单词,输入/要查找的单词,然后回车,按n查找下一个
  4. 设置文件的行号:set nu,取消文件的行号:set nonu
  5. 使用gg快捷到达文档开头,使用G到达文档末尾
  6. u撤销输入
  7. 先输入行号,再输入shift+g可快速到达某行;也可以使用:行号加回车跳转
    更多快捷键

5.关机&重启指令

  1. shutdown -h now立即关机
    shutdown -h 1一分钟后关机
    shutdown -r now立即重启
  2. halt等价于关机
  3. reboot等价于重启
  4. syn把内从的数据同步到磁盘

6.用户登陆和注销

  1. 登录时尽量少使用root帐号登陆,因为它是系统管理员,最大的权限,避免操作失误。可以利用普通帐号登陆,登录后再用su -用户名命令才切换成系统管理员的身份。
  2. 在提示符下输入logout即可注销用户
    logout注销指令在图形运行级别无效,在运行级别3下有效

7.用户管理

  1. Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
  2. Linux 的用户需要至少要属于一个组。

7.1.添加用户

useradd 用户名添加一个用户,这样添加用户所在的家目录名默认和用户名相同
useradd -d 指定目录 用户名添加一个用户的同时也指定用户所在的家目录
passwd 用户名给指定用户修改密码

7.2.删除用户

userdel 用户名删除用户
userdel -r 用户名删除用户以及用户主目录
在实际开发中,一般不会删除用户主目录,否则其产生的代码会消失

7.3.查询用户&切换用户

id 用户名查询用户,返回值分别是uid用户id号,gid所在组的id号,所在组的组名
su - 用户名切换用户,从权限高的用户比如root切换到权限低的用户是不需要输入密码的,反之需要;当需要返回原用户时,用exit即可。
who am i/whoami可以查看自己是用的哪个用户登陆的

7.4.用户组

用户组类似于角色,系统可以对有共性的多个用户进行统一管理

groupadd 组名创建组
useradd -g 组名 用户名在创建用户的时候直接分配到组中
groupdel 组名删除组
usermod -g 组名 用户名更改用户的组
usermod -d 目录名 用户名改变用户登陆的初始目录

7.5.相关配置文件

  1. /etc/paswd文件

    这是用户的配置文件,记录用户的各种信息
    每行的含义: 用户名 口令 用户id 组id 注释性描述 主目录 Shell
    在这里插入图片描述

  2. /etc/shadow文件

    这是口令的配置文件
    每行的含义:登录名 加密口令 最后一次修改时间 最小时间间隔 最大时间间隔 警告时间 不活动时间 失效时间 标志

    在这里插入图片描述

  3. /etc/group文件

    这是组配置文件
    每行的含义:组名 口令 组id 组内用户列表
    在这里插入图片描述

8.运行级别&通过运行级别找回密码

0:关机
1:单用户(找回丢失密码)
2:多用户无网络服务
3:多用户有网络服务
4:保留
5:图形界面
6:重启

常用的运行级别是3和5,要修改默认的运行级别可改文件/ect/inittabid:5:initdefault:这一行中的数字,可使用init 数字这一命令切换


如果我们不小心忘记了root密码,我们可以进入到单用户模式,然后修改root密码,单用户模式root是不需要密码就可以登录

  1. 开机时在引导界面按ctrl键进入一个界面
  2. 在该界面输入e会进入一个新的界面
  3. 在新的界面选中第二行(编辑内核)再输入e
  4. 这在行的末尾加入一个1,表示我们要进入单用户模式,完成后输入回车键
  5. 输入b,启动Linux,这时就会进入单用户模式
  6. 在单用户模式,直接使用passwd root指令就可以修改root密码了

9.文件目录类指令

  1. pwd显示当前工作目录的绝对路径
  2. ls 选项 目录或文件查看当前目录内容
    -a显示当前目录所有目录和文件,包括隐藏的
    -l以列表的方式显示信息
  3. cd 参数切换到指定目录
    cd ;/cd ~切换到家目录
    cd ..切换到上一级目录
  4. mkdir 选项 目录名创建目录
    -p创建多级目录
  5. rmdir 目录名删除(空)目录
    rm -rf 目录名可以删除非空目录
    r表示递归 f表示强制
  6. touch创建一个空文件
  7. cp 选项 source dest拷贝文件到指定目录
    \cp可以强制覆盖 不出现确认提示
    -r递归复制整个文件夹
  8. rm 选项 要删除的文件或目录名删除文件或目录
    -r递归删除整个文件夹
    -f强制删除不提示
  9. mv移动文件与目录 或 重命名
    重命名: mv oldName newName,都在当前目录时重命名
    移动文件: mv /temp/hello.txt /root,不在同一目录时,移动文件
  10. cat 选项 文件名查看文件内容
    -n显示行号
    如果文件内容太多,可使用cat 选项 文件名 | more分页显示
  11. less 要查看的文件less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件时,并不是一次将整个文件加载后显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率
  12. 命令 > 文件名输出重定向,它会将内容写入到文件中(覆盖写)
    命令 >> 文件名追加,它会将内容追加到文件的末尾
  13. echo 选项 输出内容输出内容到控制台,如echo $PATH可输出Linux的环境变量路径
  14. head 文件名用于显示文件开头部分内容,默认情况下head指令显示文件10行内容
    head -n 5 文件名查看文件头五行内容
  15. tail 文件名查看文件后10行的内容
    tail -n 5 文件名查看文件后5行的内容
    tail -f 文件名实时追踪该文档的所有更新
  16. ln -s 原文件或目录 软链接名给原文创建一个软链接,相当于windows中的快捷方式
    rm -rf 软链接可删除软链接,但软链接名后不能带/
  17. history查看已经执行过的历史命令
    history 5查看已经执行过的最后5条命令
    !5可以重新执行history中第5条命令
  18. tree 目录路径将目录以树状图的形式表达出来,如果tree指令无法使用,可使用yum install tree进行安装

10.时间日期类指令

  1. date显示当前时间
    date +%Y显示当前年份
    date +%m显示当前月份
    date +%d显示当前是哪一天
    date +%Y-%m-%d %H:%M:%s显示年月日时分秒
    date -s "2021-10-12 9:31:00"设置系统日期,注意引号
  2. cal显示当前日历
    cal 2021可以显示2021年一整年的日历

11.搜索查找类指令

  1. find 搜索范围 选项从指定目录向下递归遍历各个子目录,将满足条件的文件或目录显示在终端
    -name 文件名按照指定的文件名查找文件
    -user 用户名查找属于指定用户名所有文件
    -size 文件大小按照指定文件的大小查找文件,文件大小+20M表示大于20M的文件,+1k表示大于1k的文件,M大写,k小写,+表示大于,-小于,不写是等于
  2. locate 搜索文件可以快速定位文件路径,locate指令利用事先建立的系统中所有文件名称及路径的locate数据库事先快速定位给定的文件。查询速度较快,但由于locate指令基于数据库进行查询,所以第一次运行前,必须用updatedb指令创建locate数据库
  3. grep 选项 查找内容 源文件过滤查找,管道符|,表示将前一个命令的处理结果传递给后面的命令处理
    -n显示匹配行及行号
    -i忽略字母大小写
    举个例子cat hello.txt | grep hello -ni将cat输出的hello.txt的内容交给grep处理,找到其中有hello的行忽视大小写同时输出行号

12.压缩和解压缩类指令

  1. gzip 文件名压缩文件,只能将文件压缩为*.gz文件,压缩后原文件也会消失
    gunzip 文件名.gz解压缩
  2. zip 选项 压缩后的文件名 压缩目标路径压缩文件
    -r递归压缩,即压缩目录
    unzip 选项 文件名.zip解压缩
    -d 目录指定解压后文件的存放目录
  3. tar 选项 xxx.tar.gz 打包的内容tar指令是打包指令,最后打包的是.tar.gz文件
    -c产生.tar打包文件
    -v显示详细信息
    -f指定压缩后的文件名
    -z打包同时压缩
    -x解包.tar文件
    zip create verbase filename zcvf
      一般来说,压缩的时候可以直接使用tar -zcvf 打包后的文件名.tar.gz 打包的内容来打包文件,需要注意的是,打包的内容是可以同时包含多个文件的,而-zcvf前三个字母的顺序是可以随意变动的,但如果要设置打包后的文件名,f必须在最后面才行
      反之,解压则是tar -zxvf 需要解压的文件名 -C 解压的目标路径,其中-C 解压的目标路径可以去掉,这样就会解压到当前目录

13.组管理&权限管理

在Linux中每个用户必须属于一个组,不能独立于组外。在Linux中每个文件有所有者所在组其他组的概念。
组管理的部分内容可查看7.4

13.1. 所有者

一般为文件的创建者,谁创建了文件,就自然成为该文件的所有者,同时该文件的所在组也是用户的所在组,哪怕使用chown更改了文件的所有者,其所在组也不会改变。

ls -ahlall human long,查看文件所有者
chown 用户名 文件名修改文件所有者
chgrp 组名 文件名修改文件所在组
chown 新用户名:新组名 文件名同时修改文件的所有者和所有组
-R如果是目录,则使其下所有子文件或目录递归生效

13.2.权限

解析ll指令信息
输入ll后可查看当前目录文件信息
例如drwxr-xr-x 2 root root 38 Oct 13 06:08 test2
其中drwxr-xr-x表示文件的权限

  1. 第1位表示文件的类型
    -普通文件
    l软链接
    c字符设备,比如鼠标、键盘
    b块文件,比如硬盘
    d目录
  2. 第234位表示文件所有者权限
    r可读
    w可写
    x可被执行,如果是目录就是可进入
    值得注意的是,rwx还可以用数字来表示,r=4,w=2,x=1因此rwx=4+2+1=7
  3. 第567位表示文件所在组的用户的权限,同2
  4. 第89 10位表示文件其他组用户的权限,同2

数字2所在的位置,表示硬链接的数,如果是目录,则表示该目录的子目录的个数
第一个root表示用户名、第二个root表示文件所在组名
38表示文件大小,如果是目录的话,则是4096
时间是最后修改时间
test2是文件名

权限管理
chmod修改文件或目录的权限
u:所有者 、g:所有组 、o:其他人 、a:所有人(u、g、o的集合)
第一种权限修改方式:+、-、=变更权限
chmod u=rwx g=rx o=x 文件目录名
chmod g+w 文件目录名
chmod a-x文件目录名
第二种权限修改方式:使用数字
chmod 755 文件目录名等价于chmod u=rwx g=rx o=rx

14.crond任务调度

任务调度是指系统在某个时间执行的特定的命令或程序

crontab 选项
-e编辑crontabl定时任务
-l查询crontab定时任务
-r删除当前用户所有的定时任务
*/1 0,5 * * 1-6 ls -al /home >> /tmp/to.txt为每月的周一到周六的0点和5点每分钟执行一次命令将home文件的信息写入to.txt文件
复杂任务的执行

  1. 首先创建一个shell脚本
  2. 将你要执行的命令写入shell脚本
  3. 更改shell脚本的执行权限
  4. 编辑crontab定时任务*/1 * * * * shell脚本路径

service crond restart重启任务调度

15.Linux磁盘分区和挂载

分区基础知识

  1. mbr分区:
    1.最多支持四个主分区
    2.系统只能安装在主分区
    3.扩展分区要占一个主分区
    4.MBR最大只支持2TB,但拥有最好的兼容性
  1. gtp 分区:
    1.支持无限多个主分区(但操作系统可能限制,比如 windows下最多128个分区)
    2.最大支持18EB的大容量(1EB=1024 PB,1PB=1024 TB )
    3.windows7 64位以后支持gtp

lsblk -f查看系统的分区和挂载的情况
lsblk,老师不离开,方便记忆
例:
在这里插入图片描述

  1. 最前方的vda1,vd表示磁盘类型,a表示第一个vd磁盘,1表示这个磁盘上的第一个主分区或扩展分区
  2. xfs为分区类型
  3. 那一长串字符是表示uuid,唯一标识符
  4. /为挂载点

如果想看到分区大小,直接使用lsblk即可

挂载

  1. 添加一块硬盘(物理)
  2. 分区 fdisk /dev/sdbsdb是什么可参考上面的一段引用(vda1)
  3. 格式化 mkfs -t ext4 /dev/sdb1这段话的意思是把文件格式化成ext4类型
  4. 挂载mount /dev/sdb1 目标文件即,将已经格式化好的分区和已有文件进行挂载,但值得注意的是,这种挂载如果系统重启,就会自动解除,因此需要进行第五步
  5. 自动挂载(永久挂载)
    需要自动挂载的话,我们需要修改/etc/fstab中的内容
    244e8c8287d762eb0240a5.png)
    在这个文件中,这些决定了开机时,Linux的自动挂载,修改好并保存后,使用mount -a指令,即可实现自动挂载
    想要解除挂载,使用umount 设备名/目录名即可
    例如umount /dev/sdb1umount newdisk

磁盘情况查询

  1. df -h查询系统整体磁盘使用情况
  2. du -h /目录名查询指定目录的磁盘占用情况,默认为当前目录
    -s指定目录占用大小汇总
    -h人看的东西human
    -aall所有文件
    -c汇总
    --max-depth=1子目录深度
    例:du -ach --max-depth=1 /home查询home文件的磁盘占用情况,显示所有的深度为1的文件占用情况以及汇总

16.网络配置

  1. 自动获取
    说明:登录后,通过界面来设置自动获取ip
    特点:Linux启动后会自动获取ip,缺点是每次自动获取的ip地址可能不一样
    在这里插入图片描述在这里插入图片描述
  1. 指定固定的ip
    说明:直接修改配置文件来指定IP,并可以连接到外网
    vim /etc/sysconfig/network-scipts/ifcfg-eth0
    末端的0表示第一块网卡,如果有两块网卡 那就是eth0 eth1
    在这里插入图片描述
    ONBOOT设置为yes
    BOOTPROTO设置为static,表示以静态的方式获取ip
    IPADDR为指定的ip
    GATEWAY为网关
    DNS1与网关保持一致
    配置完毕后使用service network restart重启服务

17.进程管理

ps查看进程的使用,一般用ps -aux
-a显示当前终端的所有进程信息
-u以用户的格式显示进程信息
-x显示后台进程运行的参数
指令说明

  1. USER:用户名称
  2. PID:进程号
  3. %CPU:进程占用CPU的百分比
  4. %MEM:进程占用物理内存的百分比
  5. VSZ:进程占用的虚拟内存大小(单位:KB)
  6. RSS:进程占用的物理内存大小(单位:KB)
  7. TT:终端名称,缩写.
  8. STAT:进程状态,其中S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等
  9. STARTED:进程的启动时间
  10. TIME:CPU时间,即进程使用CPU的总时间
  11. COMMAND:启动进程所用的命令和参数,如果过长会被截断显示

ps -ef以全格式显示当前所有的进程
-e显示所有的进程
-f全格式
指令说明

  1. UID:用户ID
  2. PID:进程ID
  3. PPID:父进程ID
  4. C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是IO密集型运算,执行优先级会提高
  5. STIME:进程启动的时间
  6. TTY:完整的终端名称
  7. TIME:CPU时间
  8. CMD:启动进程所用的命令和参数

kill 选项 进程号通过进程号杀死进程
killall 进程名称通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用
-9强迫进程立即终止
pstree可以以树状的形式查看进程关系
-u显示进程的所属用户
-p显示进程的PID

18.服务管理

服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其他程序的请求,因此又称为守护进程。

service 服务名 [ start | stop | restart | reload | status ]
[启动 关闭 重启 重载 状态]
要想查看服务名,可以通过setup->系统服务/etc/init.d/服务名称来查看
在CentOS7.0以后,不再使用service,而是systemctl
systemctl [选项] 服务名
选项:
start启动
status查看状态
disable停止
stop禁用
如果要测试这个端口是否已经启动,可以使用telnet 端口号来测试

这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置。
如果希望设置某个服务自启动或关闭永久生效,要使用systemctl指令,这个指令可以给每个服务的的各个运行级别设置自启动/关闭
systemctl list-unit-files | grep xxx查看是否加入开机启动
systemctl enable 服务名设置服务开机启动
systemctl disable 服务名设置服务禁止开机启动
systemctl list-dependencies查看当前运行级别启用了哪些服务

动态监控进程
top 选项
-d指定top命令每隔几秒更新,默认是3秒在top命令的交互模式当中可以执行的命令
-i使top命令不显示任何闲置或僵死进程
-p通过指定监控进程id来仅仅监控某个进程的状态
交互操作(注意大小写)

操作功能
P以cpu使用率排序,默认就是此项
M以内存的使用率排序
N以PID排序
q退出top
U监控特定用户
k杀死某个进程(根据id)

监控网络服务
netstat 选项查看所有的网络服务
-an按一定顺序排列输出
-p显示哪个进程在调用

19.防火墙

防火墙的服务可以使用上文的systemctl来进行相关操作

firewall-cmd --zone=public --add-port=端口号/tcp --permanent添加一个端口,permanent表示永久生效,没有此参数重启后失效
firewall-cmd --reload重新载入防火墙
firewall-cmd --zone= public --query-port=端口号/tcp查看某端口是否存在
firewall-cmd --zone= public --remove-port=端口号/tcp --permanent删除该端口
firewall-cmd --list-all查看开放的端口

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值