首页 > 系统相关 >Linux学习总结

Linux学习总结

时间:2024-06-08 13:44:26浏览次数:17  
标签:总结 文件 用户 指定 学习 指令 Linux 进程 目录

Linux笔记

Linux目录结构

1. /bin目录

/ bin目录包含了引导启动所需的命令或普通用户可能用的命令(可能在引导启动后)。这些命令都是二进制文件的可执行程序( bin是binary - -二进制的简称),多是系统中重要的系统文件。

2. /sbin目录
/ sbin目录类似/bin ,也用于存储二进制文件。因为其中的大部分文件多是系统管理员使用的基本的系统程序,所以虽然普通用户必要且允许时可以使用,但一般不给普通用户使用。

3. /etc目录
/ etc目录存放着各种系统配置文件。l i n u x正是这些文件才得以正常地运行。

4. /root目录
/root 目录是超级用户的目录。

5. /lib目录
/ lib目录是根文件系统上的程序所需的共享库,存放了根文件系统程序运行所需的共享文件。这些文件包含了可被许多程序共享的代码,以避免每个程序都包含有相同的子程序的副本,故可以使得可执行文件变得更小,节省空间。

6. /lib/modules 目录
/lib/modules 目录包含系统核心可加载各种模块,尤其是那些在恢复损坏的系统时重新引导系统所需的模块(例如网络和文件系统驱动)。

7. /dev目录

/dev目录存放了设备文件,即设备驱动程序,用户通过这些文件访问外部设备。比如,用户可以通过访问/dev/mouse来访问鼠标的输入,就像访问其他文件一样。

8. /tmp目录
/tmp 目录存放程序在运行时产生的信息和数据。但在引导启动后,运行的程序最好使用/var /tmp来代替/tmp ,因为前者可能拥有一个更大的磁盘空间。

9. /boot目录
/boot目录存放引导加载器(bootstrap loader)使用的文件,如l i lo,核心映像也经常放在这里,而不是放在根目录中。但是如果有许多核心映像,这个目录就可能变得很大,这时使用单独的文件系统会更好一些。还有一点要注意的是,要确保核心映像必须在i d e硬盘的前1 0 2 4柱面内。

10. /mnt目录
/ mnt目录是系统管理员临时安装( mount )文件系统的安装点。程序并不自动支持安装到/mnt 。/mnt 下面可以分为许多子目录,例如/mnt/dosa 可能是使用m s d o s文件系统的软驱,而/mnt/exta 可能是使用e x t 2文件系统的软驱,/mnt/cdrom 光驱等等。

11./proc目录
/proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:

12./run目录

/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。

13./srv目录

该目录存放一些服务启动之后需要提取的数据。

14./var目录

var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。

15./home目录

用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。

16./media目录

linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。

17./opt目录

opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。

18./sys目录

这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。

sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。

该文件系统是内核设备树的一个直观反映。

当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。

19./usr目录

usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。

Vim

  1. 命令行 -> 一般模式 vim xxx
  2. 一般模式 -> 编辑模式 i
  3. 一般模式 -> 命令模式 :或者 /
  4. 编辑模式 -> 一般模式 ESC
  5. 命令模式 -> 一般模式 ESC
  6. 在命令行下 :wq 保存退出; :q 退出; :q! 强制退出,不保存

常用快捷键

  1. 拷贝当前行 yy
  2. 拷贝当前行向下5行 5yy
  3. 删除当前行 dd
  4. 删除当前行向下5行 5dd
  5. 查找关键字 /关键字 n 找下一个
  6. 开启/关闭行号 :set nu/:set nonu
  7. 跳转到首行 gg
  8. 跳转到尾行 G
  9. 撤销 u
  10. 跳转到指定行 行号+shift+g

关机/重启

  1. 把内存的数据同步到磁盘 sync
  2. 立刻关机 shutdown -h now
  3. 一分钟后关机 shutdown -h 1
  4. 立刻重启 shutdown -r now
  5. 立刻关机 halt
  6. 立刻重启 reboot

用户管理

  1. 添加一个用户: useradd 用户名【每个用户有自己的文件夹,默认为 /home/用户名】
  2. 可以通过 useradd 用户名 -d 目录 【不使用默认生成的家目录,自己指定用户的家目录】
  3. 更改用户密码: password 用户名
  4. 显示当前用户所在目录: pwd
  5. 删除用户
    1. 删除用户,但保留家目录 userdel 用户名
    2. 删除用户以及家目录 userdel -r 用户名
  6. 一般情况建议保留家目录

用户登录/注销

  1. 切换用户 su - 用户名
  2. 注销用户 logout

查询用户信息

  1. 查询用户信息: id 用户名
  2. whoami 只显示用户名,且su后将显示切换后的用户名
  3. who am i 则显示用户名、登陆时间和ip,且su后仍显示首次登陆的用户

用户组

  • 类似于角色,系统可以对同一组(同一权限)的用户统一操作
  1. 新增组: groupadd 组名

  2. 删除组: groupdel 组名

  3. 添加用户到指定组: useradd -g 用户组 用户名

    【不指定组会直接生成 以用户名为组名的组,并将该用户加入到组中】

  4. 修改用户组: usermod -g 用户组 用户名

  5. /etc/passwd文件 用户(user)的配置文件,记录用户的各种信息

    每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

  6. /etc/shadow文件 口令的配置文件

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

  7. /etc/group文件 组(group)的配置文件,记录Linux包含的组的信息

    每行含义:组名:口令:组标识号组内用户列表

实用指令

运行级别说明:

0:关机

1: 单用户【找回丢失密码】

2: 多用户状态没有网络服务

3: 多用户状态有网络服务

4: 系统未使用保留给用户

5: 图形界面

6: 系统重启

常用运行级别是 3和5 ,也可以指定默认运行级别

切换运行级别

通过指令设置运行级别: init 级别数字

查看当前的运行级别: systemctl get-default

设置默认的运行级别: systemctl set-default multi-user.target

帮助指令

man指令

  1. 获取帮助信息: man [命令或配置文件] 【例如 man ls 查看ls指令的说明】
  2. ls -a 查看所有文件【包括隐藏文件】
  3. ls -l 单列输出查看文件
  4. 可以组合 ls -al 单列输出查看所有文件【包括隐藏文件】
  5. 指定查看某个目录所有文件:

help指令

  1. 获取shell内置命令的信息帮助: help cd

文件目录类

cd指令

  1. 显示当前工作目录的绝对路径: pwd
  2. 跳转到指定目录: cd 目录
  3. 回到当前目录的上一级目录: cd ..
  4. 回到自己的家目录: cd ~ 或者 cd :

mkdir指令

  1. 创建目录: mkdir 要创建的目录
  2. 创建多级目录: mkdir -p 要创建的目录
  3. 删除目录: rmdir 要删除的空目录
  4. 删除非空目录: rm -rf 要删除的目录 【强制删除,慎用!】

touch指令

  1. 创建空文件: touch 文件名

cp指令

  1. 拷贝文件到指定目录: cp source dest
  2. 递归拷贝整个文件到指定目录: cp -r source dest
  3. 【强制覆盖,不提示】递归拷贝整个文件到指定目录: \cp -r source dest

rm指令

  1. 删除文件或目录: rm 要删除的文件
  2. 递归删除文件或目录: rm -r 要删除的文件或目录
  3. 【强制覆盖,不提示】递归删除整个文件或目录: rm -rf 要删除的文件或目录

mv指令

  1. 重命名文件: mv 旧文件路径 新文件路径 【同一个路径】
  2. 移动文件: mv 旧文件路径 新文件路径
  3. 移动并且重命名文件: mv 旧文件路径 新文件路径【不在同一个路径】
  4. 移动整个目录: mv 旧文件路径/ 新文件路径

cat指令

  1. 查看文件内容: cat 要查看的文件
  2. 查看文件内容并显示行号: cat -n 要查看的文件
  3. 为了方便浏览,可以带上 管道命令 |more 【意思就是把前一个命令交给 more处理,例如 cat -n /etc/profile | more】

more指令

more指令是基于VI编辑器的文本过滤器,以全屏幕的方式按页展示文本文件内容,有许多快捷键

  1. 向下翻一页: space
  2. 向下翻一行: Enter
  3. 离开: q
  4. 向下滚动一屏: Ctrl + F
  5. 返回上一屏: Ctrl + B
  6. 输出当前行的行号: =
  7. 输出文件名和当前行的行号: :f

less指令

  1. less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。
  2. less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
操作 功能说明
空白键 向下翻动一页;
[pagedown] 向下翻动一页
[pageup] 向上翻动一页;
/字串 开启向下搜寻『字串』的功能;
n 向下查找
N 向上查找
?字串 开启向上搜寻『字串』的功能;
n 向上查找
N 向下查找
q 离开less这个程序

echo指令

  1. 输出内容到控制台【例如:echo $HOSTNAME 】: echo 输出内容
  2. 输出字符串【例如:echo hello,world 】: echo 字符串

head指令

  1. 显示文件的开头部分,默认显示前10行内容: head 文件
  2. 指定显示前15行内容: head -n 15 文件

tail指令

  1. 显示文件的尾部分,默认显示最后10行内容: tail 文件
  2. 指定显示后15行内容: tail -n 15 文件
  3. 实时监控文档的所有更新: tail -f 文件

覆盖文件内容: >指令

追加文件内容: >>指令

  1. ls -l > 文件 【将显示的文件列表 ,覆盖到指定文件】
  2. ls -al >> 文件 【将显示的所有文件列表 ,追加到指定文件】
  3. cat 文件1 > 文件2 【将显示的文件1覆盖文件2内容】
  4. echo "内容" >> 文件 【将显示的 "内容" 追加到指定文件】

ln指令

软连接,也称符号链接,类似于快捷方式,主要存放了链接其他文件的路径

  1. 给源文件创建一个软链接 ln -s 源文件或目录 软链接名
  2. 删除软连接 rm 软链接路径

history指令

  1. 查看已经执行过的历史命令: history
  2. 查看已经执行过的历史命令 10条: history 10
  3. 执行指定编号的历史命令: !编号

时间日期类

date指令

  1. 显示当前时间: date
  2. 显示当前年份: date +%Y
  3. 显示当前月份: date +%m
  4. 显示当前是哪一天: date +%d
  5. 显示当前年月日时分秒: date "%Y-%m-%d %H:%M:%S"
  6. 设置系统当前时间: date -s 字符串时间

cal指令

  1. 显示当前日历: cal
  2. 显示指定年的日历: cal 年份

搜索查找类

find指令

  1. 从指定目录向下递归的变量各个子目录,讲满足条件的文件或目录显示在终端 【搜索方式有三种: -size -name -user】
    • 语法: find 搜索目录 搜索方式 文件名
  2. 按照指定的文件名查找文件: find 搜索目录 -name 文件名
  3. 按照指定的用户名查找属于用户名的所有文件: find 搜索目录 -user 用户名
  4. 按照指定的文件大【+表示大于,-表示小于,n表示等于,200K,200M,200G】: find 搜索目录 -size +文件大小

locate指令

  1. locate指令可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件
  2. Locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻。
  3. 第一次运行必须使用 updatedb指令 创建 locate数据库

which指令

可以查看某个指令在哪个目录下: which 指令名

grep指令 和 管道符号 |

  1. grep 过滤查找, 管道 | 表示将前一个命令的结果交给后面的命令处理
  2. 显示匹配行和行号: grep -n 查找内容 源文件
  3. 忽略字母大小写: grop -i 查找内容 源文件

压缩和解压类

gzip指令

压缩单个文件【只能将文件压缩为 *.gz文件】: gzip 文件

gunzip指令

解压缩单个文件: gunzip 文件.gz

zip指令

压缩整个目录: zip -r 生成的压缩包的名字 将要压缩的目录

unzip

  1. 解压缩目录: unzip 将要解压缩的内容.zip
  2. 解压缩到指定目录: unzip -d 解压后的目录 将要解压缩的内容.zip

tar指令

  1. 打包指令,最后打包的文件是 .tar.gz 的文件

  2. tar [选项] XXX.tar.gz 打包的内容

  3. 选项 功能
    -C 产生.tar打包文件
    -V 显示详细信息
    -f 指定压缩后的文件名
    -Z 打包同时压缩
    -X 解包.tar文件
  4. 示例:压缩 tar -zcvf XXX.tar.gz /home/

  5. 示例:解压 tar -zxvf XXX.tar.gz

  6. 示例:解压 tar -zxvf XXX.tar.gz -C /opt/tmp/ 【-C 固定格式,-C后面指定解压后的位置】

组管理

  • Linux中的每个用户必须属于一个组,不能独立于组外。在Linux中的每个文件有所有者、所在组、其他组的概念

文件/目录所有者

  • 文件/目录所有者,一般为文件的创建者,也可以修改
  1. 查看文件的所有者: ls -ahl
  2. 修改文件的所有者: chown 用户名 文件名

组的创建

  1. 创建组: groupadd 组名
  2. 创建用户到指定组: useradd -g 用户 组名

所在组

  • 当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组
  1. 查看文件/目录的所在组: ls -ahl
  2. 修改文件/目录的所在组: chgrp 组名 文件名

其他组

除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组

改变用户的所在组

  1. 添加用户是可以指定该用户添加在哪个组: useradd -g 用户 组名
  2. root用户可以改变某个用户的组
  3. 改变用户所在组: usermod -g 新组名 用户名
  4. 改变用户登录的初始目录【用户需要有进入新目录的权限】: usermod -d 目录名 用户名

权限

查看权限 :ls -l

-rwxr-xr-x. 1 root root    8440 6月   1 13:55 myhello

第0位:-

其余每三个一组

  1. rwx;
  2. r-x;
  3. r-x
  • 0-9位说明
  1. 第0位确定文件类型(d,-,I,c,b)

​ -是普通文件

​ I是链接,相当于windows的快捷方式

​ d是目录,相当于windows的文件夹

​ c是字符设备文件,鼠标,键盘

​ b是块设备,比如硬盘

2.第1-3位确定所有者(该文件的所有者)拥有该文件的权限。 ---User

3.第4-6位确定所属组(同用户组的)拥有该文件的权限,---Group

4.第7-9位确定其他用户拥有该文件的权限---Other

  • 1 :如果是文件,表示硬连接数;如果是目录,表示子目录数

  • root root :前一个是文件所有者,后一个是文件所在组

  • 8440 :表示文件的大小

  • 6月 1 13:55 :表示最后修改时间

  • myhello :文件名

rwx权限详解

  • rwx数字表示 r=4,w=2,x=1

rwx作用到文件

  1. 【r】代表可读(read):可以读取,查看
  2. 【w】代表可写(write):可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件
  3. 【x】代表可执行(execute):可以被执行

rwx作用到目录

  1. 【r】代表可读(read):可以读取,查看目录内容
  2. 【w】代表可写(write):可以修改,对目录内创建+删除+重命名目录
  3. 【x】代表可执行(execute):可以进入该目录

修改权限-chmod

  • 通过chmod指令,可以修改文件或目录的权限

方式一: + - = 变更权限

u: 所有者

g: 所在组

o: 其他人

a:所有人【u、g、o的总和】

  1. 给文件的所有者赋予读写执行权限,给所在组的用户赋予读和执行的权限,给其他组赋予执行的权限: chmod u=rwx,g=rx,o=x 文件/目录
  2. 给文件的其他用户赋予写的权限: chmod o+w 文件/目录
  3. 给所有人去掉 执行权限 : chmod a-x 文件/目录

方式二: 数字 变更权限

  • rwx数字表示 r=4,w=2,x=1

u: 所有者

g: 所在组

o: 其他人

a:所有人【u、g、o的总和】

  1. 给文件的所有者赋予读写执行权限,给所在组的用户赋予读和执行的权限,给其他组赋予执行的权限: chmod 751 文件/目录
  2. 给文件的其他用户赋予写的权限: chmod o+w 文件/目录
  3. 给所有人去掉 执行权限 : chmod a-x 文件/目录

修改文件所有者-chown

  1. 改变所有者: chown 所有者 文件/目录
  2. 改变所有者和所在组: chown 新所有者:新组 文件/目录
  3. 递归改变所有者, -R 如果是目录,对其下所有的子文件或目录递归生效 chown -R 新所有者 文件/目录
  4. 递归改变所有者和所在组, -R 如果是目录,对其下所有的子文件或目录递归生效 chown -R 新所有者:新组 文件/目录

修改文件/目录所在组-chgrp

  1. 改变所在组: chgrp 新组 文件/目录
  2. 改变目录下所有的文件的所在组: chgrp -R 新组 文件/目录

crond - 定时循环任务调度

crontab 进行 定时任务的设置

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

任务调度分类:

  1. 系统工作:希望重要的工作必须反复执行

  2. 个别用户工作:执行某些程序,比如mysql备份

  3. 编辑crontab定时任务: crontab -e

  4. 查询crontab任务: crontab -l

  5. 删除当前用户所有的crontab任务: crontab -r

*/1**** ls -l /etc/ > /tmp/to.txt
项目 含义 范围
第一个“*” 一小时当中的第几分钟 0-59
第二个“**” 一天当中的第几小时 0-23
第三个“**” 一个月当中的第几天 1-31
第四个“**” 一年当中的第几月 1-12
第五个“**” 一周当中的星期几 0-7(0和7都代表星期日)

特殊符号:

符号 含义 示例 解释
* 代表任何时间 * 每小时的每分钟都执行一次
, 代表不连续的时间 08,12,16*** 每天的8点0分,12点0分,16点0分都执行一次
- 代表连续的时间范围 05**1-6 周一到周六的凌晨5点0分执行命令
/ 代表每隔多久执行一次 */10*** 每隔10分钟执行一次
/n 每隔n个单位时间执行一次 */n 每隔n分钟、小时等执行一次

案例

时间表达式 执行时间
45 22 * * * 每天22点45分
0 17 * * 1 每周1的17点0分
0 5 1,15 * * 每月1号和15号的凌晨5点0分
40 4 * * 1-5 每周一到周五的凌晨4点40分
*/10 4 * * * 每天凌晨4点开始,每隔10分钟
0 0 1,15 * 1 每月1号和15号,每周1的0点0分

其他指令

  1. 终止任务调度: crontab -r
  2. 列出当前有哪些任务调度: crontab -l
  3. 重启任务调度: service crond restart

at定时任务 - 一次性定时计划任务

基本介绍

  1. at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行。

  2. 默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业。

  3. at命令是一次性定时计划任务,执行完一个任务后不再执行此任务了。

  4. 在使用at命令的时候,一定要保证atd进程的启动,可以使用相关指令来查看。

  5. 可以通过 ps -ef | grep atd 查看当前atd是否启动在运行了

  6. 向job队列添加一个作业: at [选项] [时间]

  7. Ctrl + D 结束at命令输入

  8. 选项 含义
    -m 当指定的任务被完成后,将给用户发送邮件,即使没有标准输出
    -1 atq的别名
    -d atrm的别名
    -v 显示任务将被执行的时间
    -C 打印任务的内容到标准输出
    -V 显示版本信息(注意:这里可能存在重复,应为 -v 或其他选项)
    -q <队列> 使用指定的队列
    -f <文件> 从指定文件读入任务而不是从标准输入读入
    -t<时间参数> 以时间参数的形式提交要运行的任务
  9. 指定时间的方法:

    1. 接受在当天的hh:mm(小时:分钟)式的时间指定:如果指定的时间已过去,任务将在第二天执行。例如,04:00

    2. 使用midnight(深夜)、noon(中午)、teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指定时间

    3. 采用12小时计时制:在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。例如,12pm

    4. 指定命令执行的具体日期:指定格式为monthday(月日)、mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。例如,04:00 2021-03-15

    5. 使用相对计时法:指定格式为now + count time-units,其中now就是当前时间,time-units是时间单位,可以是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量,例如几天,几小时。例如,now + 5 minutes

    6. 直接使用today(今天)、tomorrow(明天)来指定完成命令的时间

  10. 删除指定的任务: atrm 编号

  11. 查看任务列表: atq

Linux分区

基本介绍

  1. Linux来说无论有几个分区,分给哪一录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分。
  2. Linux采用了一种叫”载入“的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。

硬盘说明

  1. Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘。
  2. 对于IDE硬盘,驱动器标识符为“hdx~”,其中“hd"表明分区所在设备的类型,这里是指IDE硬盘了。"x"为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“~"代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。例如,hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区。【了解即可】
  3. 对于SCSI硬盘则标识为"sdx~",SCSI硬盘是用"sd"来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样。

查看所有设备挂载情况

查看所有设备挂载情况: lsblk 或者 lsblk -f【信息更全】

添加一块硬盘

分区命令: fdisk /dev/sdb

格式化指令: mkfs -t ext4 /dev/sdb1

挂载指令【挂载:将一个分区和一个目录联系起来】: mount 设备目录 目录

卸载硬盘: umount 设备目录 或者 umount 目录

  • 值得注意的是:用命令行挂载的关系是临时的,当系统重启之后,挂载的关系会自动消失!!!

永久挂载/自动挂载

  1. 通过修改/etc/fstab实现挂载
  2. 添加完成后 执行mount -a 立刻生效

查看磁盘使用情况

  1. 查看系统整体磁盘使用情况: df -h
  2. 查询指定目录的磁盘占用情况【默认当前目录】: du -h 目录
  3. -s 指定目录占用大小汇总
  4. -h 带计量单位
  5. -a 含文件
  6. --max-depth=1 子目录深度
  7. -c 列出明细的同时,增加汇总值

磁盘情况实用指令

  1. 统计文件夹下的文件个数: ls -l /文件夹 | grep "^-" |wc -l
  2. 统计文件夹下的目录个数: ls -l /文件夹 | grep "^d" |wc -l
  3. 统计文件夹下的文件个数,包括子文件夹里的: ls -lR /文件夹 | grep "^-" |wc -l
  4. 统计文件夹下的目录个数,包括子文件夹里的: ls -lR /文件夹 | grep "^d" |wc -l
  5. 以树状显示目录结合 tree 目录【先 yum install tree 安装一下 】

网络配置

  1. windows 下查看网络配置: ipconfig

  2. Linux下查看网络配置: ifconfig

  3. 测试主机之间网络连通性: ping 目的主机的ip地址

  4. 网络环境配置的具体配置方式:

    1. 自动获取: 登录后,通过界面的来设置自动获取ip

      特点:linux启动后会自动获取IP,缺点是每次自动获取的ip地址可能不一样

    2. 指定ip: 直接修改配置文件来指定ip,并可以连接到外网

    ​ 编辑 vim /etc/sysconfig/network-scripts/ifcfg-ens33

    TYPE="Ethernet"
    PROXY_METHOD="none"
    BROWSER_ONLY="no"
    BOOTPROTO="static"
    DEFROUTE="yes"
    IPV4_FAILURE_FATAL="no"
    IPV6INIT="yes"
    IPV6_AUTOCONF="yes"
    IPV6_DEFROUTE="yes"
    IPV6_FAILURE_FATAL="no"
    IPV6_ADDR_GEN_MODE="stable-privacy"
    NAME="ens33"
    UUID="23626adf-3676-45b2-938b-e6b9864816d8"
    DEVICE="ens33"
    ONBOOT="yes"
    #IP地址
    IPADDR=192.168.200.130
    #网关
    GATEWAY=192.168.200.2
    #域名解析器
    DNS1=192.168.200.2
    
    
  5. 重启网络服务: service network restart

设置主机名

  1. 为了方便记忆,设置主机名
  2. 查看当前主机名: hostname
  3. 修改主机名在文件: /etc/hostname 指定
  4. 重启生效

如何设置主机名和hosts映射?

  1. windows下 过某个主机名找到对应windows系统: C:\Windows\System32\drivers\etc\hosts 文件指定
  2. Linux系统下 通过某个主机名找到对应Linux系统: 在/etc/hosts 文件中指定

Hosts是什么?

​ Hosts 是一个文本文件,用于记录IP和Hostname【主机名】之间的映射关系

DNS

  1. DNS是 域名系统
  2. 是互联网上作为域名和IP地址相互映射的一个分布式数据库

示例:

  1. 当用户在浏览器输入了www.baidu.com
  2. 浏览器先检查浏览器缓存中有没有该域名解析IP地址,
  3. 有就先调用这个IP完成解析;
  4. 如果没有检查操作系统DNS解析器缓存,如果有直接返回IP完成解析。
  5. 这两个缓存,可以理解为本地解析器缓存
  6. 一般来说,当电脑第一次成功访问某一网站后,在一定时间内,浏览器或操作系统会缓存他的IP地址(DNS解析记录)。
  7. 如在cmd窗口中输入:
  8. ipconfig/displaydns //DNS域名解析缓存
  9. ipconfig/flushdns //手动清理DNS缓存
  10. 如果本地解析器缓存没有找到对应映射,检查系统中hosts文件中有没有配置对应的域名IP映射,如果有,则完成解析并返回。
  11. 如果本地DNS解析器缓存和hosts文件中均没有找到对应的IP则到域名服务DNS进行解析域
  12. 用户输入 → 浏览器缓存 → DNS缓存【操作系统中】 → hosts文件 → DNS【公网上】

进程管理

  1. 在LINUX中,每个执行的程序都称为一个进程。每一个进程都分配一个ID号(pid,进程号)。
  2. 每个进程都可能以两种方式存在的。前台与后台。
  3. 所谓前台进程就是用户目前的屏幕上可以进行操作的。
  4. 后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
  5. 一 般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。

显示系统执行的进程

  1. 显示系统执行的进程,以及执行状况: ps
  2. 显示当前终端的所有进程信息: ps -a
  3. 以用户的格式显示信息: ps -u
  4. 显示后台进程运行的参数: ps -x
  5. 通常组合使用: ps -aux | more

ps指令详解

1. ps命令使用示例

  • 命令格式:ps -aux | grep xxx
    • 示例:查看系统中是否存在sshd服务

2. 指令说明(System V展示风格)

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

这个命令和说明对于了解Linux系统中进程的状态和性能非常有帮助,可以帮助用户监控和管理正在运行的进程。

全格式显示当前所有的进程,查看进程的父进程

  1. 全格式显示当前所有的进程: ps -ef 【-e显示所有进程,-f全格式】
  2. 可以带上grep 过滤: ps -ef | grep 进程 【例如 sshd 远程连接进程】

终止进程

  1. 通过进程号终止进程: kill 进程号
  2. 通过进程名称终止进程【子进程也会终止】: killall 进程名称
  3. 通过进程号终止进程【强制终止】: kill -9 进程号

查看进程树

  1. 查看进程树: pstree
  2. 显示进程的PID: pstree -p
  3. 显示进程的所属用户: pstree -u

服务管理

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

service管理指令

  1. service 服务名 [start | stop | restart | reload | status]
  2. CentOS7.0很多服务用 systemctl来管理
  3. service 指令管理的服务 可以在 /etc/init.d/ 查看【ls -l /etc/init.d/】
  4. 查看所有的系统服务: setup

服务的运行级别

Linux系统有7种运行级别(runlevel):

常用的是级别3和5

  • 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
  • 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
  • 运行级别2:多用户状态(没有NFS),不支持网络 运行级别
  • 3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式 运行级别
  • 4:系统未使用,保留 运行级别
  • 5:X11控制台,登陆后进入图形GUI模式 运行级别
  • 6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动

Linux开机流程

开机 → BIOS → /boot → systemd → 运行级别 → 运行级对应的服务

设置各个运行级别的自启动/关闭

  1. 查看服务 chkconfig --list | grep xxx
  2. chkconfig 服务名 --list
  3. chkconfig --level 5 服务名 on/off
  4. chkconfig 重新设置服务后,需要重启后生效

systemctl管理指令

  1. 基本语法: systemctl [start | stop | restart | status] 服务名
  2. systemctl 指令管理的服务在 /usr/lib/systemd/system 查看
  • 关闭或启动了服务后,立即生效,但是只是临时生效,重启系统后,还是会回去以前的服务的设置
  • 希望设置某个服务的自启动或关闭永久生效,还是要使用systemctl enable 服务名;或 systemctl disable 服务名 ;

systemctl设置服务的自启动状态

  1. 查看服务的自启动状态: systemctl list-unit-files
  2. 针对某项服务查看: systemctl list-unit-files | grep 服务名
  3. 设置服务开机启动: systemctl enable 服务名
  4. 关闭服务开机启动: systemctl disable 服务名
  5. 查询某个服务是否是自启动: systemctl is-enabled 服务名

打开或关闭指定端口

  1. 打开端口: filewall-cmd --permanent --add-port=端口号/协议
  2. 查看 端口/协议: netstat -anp | more
  3. 关闭端口: filewall-cmd --permanent --remove-port=端口号/协议
  4. 重新载入,才能生效: filewall-cmd --reload
  5. 查询端口是否开放: filewall-cmd --query-port=端口号/协议

动态监控进程

  • top 也是用来显示正在执行的进程。但top和ps最大的不同在于,top 可以在执行一段时间更新正在运行的进程
    1. 指定top命令每隔几秒更新。默认3秒: top -d 秒数
    2. top命令不显示任何闲置或僵死进程: top -i
    3. 通过指定监控进程ID来针对监控某个进程的状态: top -p

交互操作

  1. 以CPU使用率排序,默认就是此项: P

  2. 以内存的使用率排序: M

  3. 以PID排序: N

  4. 退出top q

查看网络状况-netstat

  1. 按一定顺序排列输出: netstat -an
  2. 显示哪个进程在调用: netstat -p

软件包管理

  1. rpm用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。
  2. RPM是RedHatPackageManager(RedHat软件包管理工具)的缩写,类似windows的setup.exe,这一文件格式名称虽然打上了RedHat的标志,但理念是通用的。
  3. Linux的分发版本都有采用(suse,redhat,centos等等),可以算是公认的行业标准了。

查询rpm包相关信息

  1. 查询已安装的rpm列表: rpm -qa
  2. 指定查询已安装的rpm列表: rpm -qa | grep 软件包名
  3. 查询软件包是否安装: rpm -q 软件包名
  4. 查询软件包信息: rpm -qi 软件包名
  5. 查询软件包中的文件: rpm -ql 软件包名
  6. 查询文件所属的软件包: rpm -qf 文件全路径

卸载rpm包

  1. 卸载删除指定rpm包: rpm -e RPM包的名称
  2. 强制卸载删除指定rpm包【不推荐】: rpm -e --nodeps RPM包的名称

安装rpm包

  1. 安装指令: rpm -ivh RPM包的全路径名称 【i=install安装;v=verbose提示;h=hash进度条】

yum

  • Yum是一个shell前端软件包管理器。基于rpm包管理,能够从指定的服务器自动下载rpm包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。
  1. 查询yum服务器是否有需要安装的软件: yum list | grep 软件列表
  2. 安装指定的yum包 :yum install 软件包

Shell编程

Shell是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。

Shell执行的方式

  1. 创建时,约定俗成 .sh结尾
  2. 脚本以 #!/bin/hash开头
  3. 脚本需要有可执行权限
  4. 如果要运行,需要赋予权限 可以 chmod u+x 脚本名
  5. 也可不赋予权限 ,但是需要用 sh 脚本名 来运行

Shell脚本的多行注释

:<<!

内容

Shell变量

  1. Linux中 Shell中的变量分为,系统变量和用户自定义变量
  2. 系统变量: $HOME、$PWD、$SHELL、$USER等等,比如echo $HOME
  3. 显示当前shell中的所有变量: set

Shell变量的自定义

  1. 定义变量:变量名=值
  2. 撤销变量: unset变量
  3. 声明静态变量: readonly变量,注意不能unset

Shell变量规则

  1. 变量名称可以由字母、数字、下划线组成,但是不能以数字开头

  2. 等号两侧不能有空格

  3. 变量名称一般习惯为大写,【规范】

  4. 将命令的返回值赋给变量,用 反引号``

  5. A=`date`      date命令的返回值赋给变量A
    A=$(date)等价于反引号
    

设置环境变量

  1. 将Shell变量输出为环境变量/全局变量: export 变量名=变量值
  2. 让修改后的配置信息立即生效:: source 配置文件
  3. 查询环境变量的值: export $变量名

位置参数变量

  1. 执行Shell脚本时,可以通过位置参数变量来获取到命令行的参数信息

  2. 比如在命令行输入: ./myshell.sh 200 100

  3. 变量符号 功能描述
    $n n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用大括号包含,如$
    $* 这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体
    $@ 这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待
    $# 这个变量代表命令行中所有参数的个数

预定义变量

  1. 预定义变量就是Shell设计者事先定义好的变量,可以直接在shell脚本中使用
  2. 当前进程的进程号【PID】 $$
  3. 后台运行的最后一个进程的进程【PID】 $!
  4. 最后一次执行的命令的返回状态。 $?
  5. ​ $? 如果这个变量值为0,证明上个命令正确执行;
  6. ​ $? 如果这个变量的值为非0,则证明上个命令执行不正确

运算符

  1. $[运算式] 或者 $((运算式)) 或者 expr m + n【expr 间要有空格,结果如果要赋给变量用反引号】

  2. expr \*乘   /除    %取余 
    

条件判断

  1. if [ condition ] 非空为true,可以使用$?验证 (0为true , >1为false)
  2. 字符串比较 =
  3. 两个整数比较 小于lt 小于等于le 等于eq 大于gt 大于等于ge 不等于ne
  4. 按文件权限判断 有读的权限-r 有写的权限-w 有执行的权限-x
  5. 按照文件类型判断 文件存在并且是常规文件-f 文件存在-e 文件存在并且是个目录-d

流程控制

单分支

if [ 条件判断式 ]
then
	代码
fi

多分支

if [ 条件判断式 ]
then
	代码
elif [ 条件判断式 ]
then
	代码
fi

case语句

case $变量名 in
"值1")
	代码
;;
"值2")
	代码
;;
*)
	代码
;;
esac

循环控制

for循环

方式1

for 变量 in 值1 值2 值3
do
	代码
done

方式2

for ((初始值;循环控制条件;变量变化))
do
	代码
done

While循环

while[ 条件判断式 ]
do
	代码
done

读取控制台输入-read

  1. 指定读取值的提示信息: read -p "提示信息" 变量名
  2. 指定读取值时等待的时间 秒,如果没有在知道时间内输入,不在等待: read -t 时间 -p "提示信息" 变量名

函数

shell编程有系统函数也可以自定义函数。

系统函数

basename
  1. 返回完整路径最后 / 的部分,常用与获取文件名: basename [ pathname ]
  2. 带上 suffix后缀,basename 会将前缀和后缀都去掉: basename [ pathname ] [ suffix ]
  3. [pathname] 也可以是 string
dirname
  1. 返回完整路径最后 / 的前面部分,常用于返回路径部分
  2. 用法和basename 相反

自定义函数

定义
function  funname(){
	代码
	return int
}
调用
funname [值]

标签:总结,文件,用户,指定,学习,指令,Linux,进程,目录
From: https://www.cnblogs.com/zydevelop/p/18238568/zy_linux

相关文章

  • C语言学习日志2-关键字i
    1.1,最宽恒大量的关键字----autoauto:它很宽恒大量的,你就当它不存在吧。编译器在默认的缺省情况下,所有变量都是auto的。1.2,最快的关键字----registerregister:这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中而不是通过内存寻址访问以提高效率。注意是尽可能,不是绝......
  • C语言学习日志1-定义与声明
    什么是定义:所谓的定义就是(编译器)创建一个对象,为这个对象分配一块内存并给它取上一个名字,这个名字就是我们经常所说的变量名或对象名。一个变量或对象在一定的区域内(比如函数内,全局等)只能被定义一次,如果定义多次,编译器会提示你重复定义同一个变量或对象。什么是声明:有两重含......
  • Linux:权限
    文章目录shell命令以及运行原理Linux下用户的分类Linux权限管理文件权限值的表示方法字符表示方法8进制数值表示方法权限的修改权限掩码目录文件的权限关于权限的总结关于权限的总结shell命令以及运行原理Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)......
  • Python中__面向对象__学习 (上)
    目录一、类和对象1.类的定义2.根据对象创建类二、构造和析构1.构造方法(1)不带参数的构造方法(2)带参数的构造方法2.析构方法三、重载1.定制对象的字符串形式(1)只重载__str__方法(2)只重载__repr__方法(3)重载__str__和__repr__方法2.运算符重载(1)加法运算重载(2)索引和分......
  • Java那些事儿 —— 写一篇妈妈也能看懂的Java学习笔记
    Java那些事儿——写一篇妈妈也能看懂的Java学习笔记小白也能看懂的Java学习笔记(因为我也是小白,所以写一点小白自己能看懂的东西)这本笔记包括但是不限于Java知识,(做开发没多久感觉自己忘记的差不多了,最近又看了几本书,心血来潮写一个笔记)写这个的目的意在自我复习,尽量让自......
  • Linux 中date命令
     date主要用于显示日期,若是不以加号作为开头,则表示要设定时间,而时间格式为MMDDhhmm[[CC]YY][.ss],其中MM为月份,DD为日,hh为小时,mm为分钟,CC为年份前两位数字,YY为年份后两位数字,ss为秒数。001、最基本的用法[root@PC1test2]#date##输出日期SatJun812:......
  • Matlab实现基于SVM-Adaboost支持向量机结合Adaboost集成学习时间序列预测(股票价格预测
    %加载时间序列数据data=load(‘stock_data.mat’);X=data.X;%特征矩阵y=data.y;%目标向量%划分训练集和测试集train_ratio=0.8;%训练集比例train_size=round(train_ratio*size(X,1));train_X=X(1:train_size,......
  • Matlab实现基于BiLSTM-Adaboost双向长短期记忆神经网络结合Adaboost集成学习时间序列
    %步骤1:准备数据%假设你已经准备好了股票价格的训练数据和测试数据%训练数据:train_data,包含n个训练样本,每个样本有m个时间步长的特征%训练标签:train_labels,包含n个训练样本的目标值(股票价格)%测试数据:test_data,包含k个测试样本,每个样本有m个时间步长的特征%测试标......
  • 公司面试题总结(二)
    7.说说JavaScript中的数据类型?存储上的差别?•基本类型:        oNumber        oString        oBoolean        oUndefined        onull        osymbol•引用类型       ......
  • 机器学习笔记(3): 神经网络初步
    神经网络应该由若干神经元组成。前面的每一个神经元都会给到一个参数,将传递的所有参数看作一个向量\(\vecx\),那么此神经元的净输入为:\[z=x\omega+b\]其中\(\omega\)称为权重向量。这里认为\(x\)是行向量,而\(\omega\)是列向量。神经元还有一个激活函数\(f(\c......