# Linux
> 用于学习记录
> CentOS 7 版
> 持续更新

S1 概述

1.1 介绍

是一套免费使用和自由传播的类 Unix 操作系统,有众多以其为内核的发行版,例如Ubuntu、CentOS等。

1.2 应用场景

  • linux下开发项目
  • linux运维工程师
  • linux嵌入式工程师
  • 服务器领域、嵌入式领域(免费、稳定、高效、小)

1.3 Linux 分区介绍

  1. Boot引导分区
  2. Swap交换分区
  3. Root根分区

1.4 虚拟机网络连接的3种方式

1.4.1 桥接模式

ip与外部系统配置在同一网段,虚拟系统可以和外部系统相互通讯,但容易造成ip冲突(255数量限制)。

桥接模式

1.4.2 NAT模式

网络地址转换模式,可以配置跟外部系统不同的网段,解决ip冲突问题,此时在本机系统生成虚拟网卡,用来跟外部系统通讯。

NAT模式

1.4.3 主机模式


S2 Vi/Vim

2.1 常用的3种模式

img

2.1.1 正常模式

vim 打开的文件就直接进入正常模式,通过方向键来移动光标

2.1.2 插入模式

正常模式下,输入i即可进入插入模式

2.1.3 命令行模式

先按esc退出插入模式,输入:即可进入命令模式,再输入wq即可。wq代表写入并退出、q代表退出、q!代表强制退出保存。

2.2 常用快捷键

详细快捷键

2.2.1 正常模式

  1. yy:复制当前行
  2. dd:删除当前行
  3. p:粘贴
  4. G:最末行
  5. gg:最初行
  6. u:撤销上一动作
  7. shift+g:快速定位行号(前面先输入具体行号)

2.2.2 命令行模式

  1. 单词:查找输入的单词
  2. n:查找下一个
  3. set nu:显示行号
  4. set nonu:取消显示行号
  5. nu:当前行号

S3 命令语句

指令快查–菜鸟教程

3.1 关机、重启、同步

3.1.1 关机

  1. shutdown:默认1min后关机
  2. shutdown -h 2:2min后关机
  3. shutdown -h now:立刻关机
  4. halt:同上

3.1.2 重启

  1. shutdown -r now:立刻重启
  2. reboot:同上

3.1.3 同步

  1. sync:将内存数据同步到硬盘

3.2 用户和组操作

用户和组相关文件夹

3.2.1 用户

  1. su - 用户名:切换账号
  2. logout:退出当前账号(图形界面无效)
  3. useradd 用户名:添加账户(默认在 /home 下新建用户文件夹)
  4. useradd -d /home/文件夹名 用户名:在指定文件夹下添加用户
  5. passwd 用户名:给指定用户添加密码
  6. userdel 用户名:删除用户,但保留home下目录
  7. userdel -r 用户名:湮灭用户
  8. id 用户名:查询用户信息
  9. whoami:显示最开始登录的用户信息

3.2.2 组

  1. groupadd 组名:新增组
  2. groupdel 组名:删除组
  3. useradd -g 组名 用户名:在特定的组名添加指定用户(不指定组的话自动个人一组,组名与用户名相同)
  4. usermod -g 组名 用户名:修改用户的组

3.3 运行级别

运行级别

  1. init 级别数:切换级别模式
  2. systemctl get-default:查看默认运行级别
  3. systemctl set-default XXX.target:设置默认级别为XXX

3.4 文件目录指令

  1. pwd:显示当前绝对路径

  2. ls 选项 目标:显示目标内容
    选项:-a:显示隐藏;-l:按行显示

  3. cd:切换目录指令
    cd ~:返回当前用户的home目录(root用户返回root目录)
    cd ..:返回上一级

  4. mkdir 选项 目录名:创建单级目录
    选项:-p:创建多级目录

  5. rmdir 目录名:删除空目录

  6. rm -rf 目标:强制递归删除目标(-r:递归、f:强制)

  7. cp 源 目标:复制
    cp -r 源 目标:整体复制

  8. mv 源 目标:重命名 & 移动

  9. cat 文件:不可修改地查看文件内容
    cat -n 文件:显示行号查看

  10. touch:修改文件或目录的时间属性,若文件不存在则新建文件

  11. echo:输出内容到Console

  12. ln -s 源 软连接名:软连接,类似快捷方式

  13. date:时间

  14. cal:日历

  15. find 目标 选项
    查询选项

  16. locate:定位文件路径(首次使用前要updatedb

  17. grep:过滤查找
    grep指令

  18. gzip:压缩成.gz

  19. gunzip:解压.gz文件

  20. zip:压缩成.zip

  21. unzip:解压.zip

  22. tar:压缩、解压.tar.gz
    tar指令

  23. rpm:(redhat package manager)软件包操作

  24. yum:( Yellow dog Updater, Modified)一个前端软件包管理器,基于rpm可以从指定服务器自动下载rpm包,并处理依赖关系,Ubuntu是apt(Advanced Packaging Tool)

3.5 权限管理

rwx权限

r=4 ; w=2 ; x=1 (4\6\7)

chmod:修改权限

u:user ;
g:group ;
o:other ;
a:all

3.6 定时

crontab:定时触发,周期执行
at:一次性定时触发


S4 磁盘与分区

4.1 原理介绍

Linux采用了一种叫“挂载”(mount)的方法,将磁盘的分区挂载到文件系统的目录上,在系统中访问这个目录就相当于访问这个分区了。

4.2 实现过程

  • 重启识别到硬盘后,进行硬盘分区
  • 分区格式化
  • 分区挂载

4.3 指令

  1. lsblk–(list block):查看所有设备挂载情况
  2. lsblk -f
  3. fdisk 磁盘硬件目录:增加磁盘
  4. mkfs:分区格式化
  5. mount:挂载
  6. umount:卸载

S5 网络

5.1 网络配置

配置IP:

1.DHCP方法: 自动获取,但是ip不固定,不能作为服务器
2.设置页面配置
3.配置文件静态修改:vi etc/sysconfig/network-scripts/ifcfg-ens33


S6 Shell编程

6.1 什么是shell,为什么学

Shell 是一个命令行解释器,它为用户提供了一个向Linux kernel发送请求的界面系统级程序,种类很多。
通常说的Shell是指“Shell脚本”(shell script),这跟Shell不是一个概念,是一种为Shell编写的脚本程序
img

6.2 脚本语法格式

  • #!/bin/bash开头,bash是shell的一种,国内一般都是用bash
  • #!为约定标记,告诉系统这个脚本用什么解释器执行,用那周shell
  • #为单行注释
  • :<<EOF
      注释内容...
      注释内容...
      注释内容...
      EOF
    

    为多行注释,其中EOF可以用别的符号代替,但是结尾必须于其一致

6.3 脚本执行(需要x权限)

  1. 相对路径: ./脚本名.sh
  2. 绝对路径:绝对路径/脚本名.sh
  3. sh执行:(可以没有x权限)sh 脚本名.sh

6.4 Shell变量

分为系统变量用户自定义变量

6.4.1 系统变量

$HOME, $PWD, $SHELL, $USER

6.4.2 用户自定义变量

  • 定义变量:变量=值,注意不能有空格
  • 撤销变量:unset 变量
  • 静态变量:readonly 变量=值,此变量不可撤销
  • 使用变量:$变量&${变量},注意$符号,{}为好习惯

6.4.3 字符串

  • 单引号
    1. 变量无效
    2. 不可出现转义字符
  • 拼接字符串
    $str1 $str2
    
  • 截取字符串
    截取index为1-4的

    ${str:1:4}             
    
  • 字符串长度
    # 二者等价
    ${#string}
    ${#string[0]}
    

6.4.4 数组

arr=(v1 v2 v3)

获取数组中所有元素

${arr[@]}
${arr[*]}

${#arr[@]}  #获取数组长度

6.5 运算符

原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。

  1. $((运算表达式))
  2. $[运算表达式] (推荐)

6.6 传递参数

$0表示执行的文件名(包括文件路径)
$n表示脚本执行的第n个参数


S6 守护进程

在使用net6开发Linux程序时,除了AspNet Core项目外,如果是开发的一个不带Web界面,只是后台运行的控制台程序的话,默认发布到Linux系统时,如果是以start-stop-daemon方式(守护进行方式)启动运行的话,默认是不行的,程序会自动终止,因为在Linux下dotnet程序运行是以会话的方式。
————————————————
版权声明:本文为CSDN博主「CodingPioneer」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zlbdmm/article/details/125188914

利用supervisor创建守护进程

版权声明:本文为LASER_06原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/LASER-06/p/16741236.html