Linux
# Linux
> 用于学习记录
> CentOS 7 版
> 持续更新
S1 概述
1.1 介绍
是一套免费使用和自由传播的类 Unix 操作系统,有众多以其为内核的发行版,例如Ubuntu、CentOS等。
1.2 应用场景
- linux下开发项目
- linux运维工程师
- linux嵌入式工程师
- 服务器领域、嵌入式领域(免费、稳定、高效、小)
1.3 Linux 分区介绍
- Boot引导分区
- Swap交换分区
- Root根分区
1.4 虚拟机网络连接的3种方式
1.4.1 桥接模式
ip与外部系统配置在同一网段,虚拟系统可以和外部系统相互通讯,但容易造成ip冲突(255数量限制)。
1.4.2 NAT模式
即网络地址转换模式,可以配置跟外部系统不同的网段,解决ip冲突问题,此时在本机系统生成虚拟网卡,用来跟外部系统通讯。
1.4.3 主机模式
S2 Vi/Vim
2.1 常用的3种模式
2.1.1 正常模式
以 vim
打开的文件就直接进入正常模式,通过方向键来移动光标
2.1.2 插入模式
正常模式下,输入i
即可进入插入模式
2.1.3 命令行模式
先按esc
退出插入模式,输入:
即可进入命令模式,再输入wq
即可。wq代表写入并退出、q代表退出、q!代表强制退出保存。
2.2 常用快捷键
2.2.1 正常模式
yy
:复制当前行dd
:删除当前行p
:粘贴G
:最末行gg
:最初行u
:撤销上一动作- shift+
g
:快速定位行号(前面先输入具体行号)
2.2.2 命令行模式
单词
:查找输入的单词n
:查找下一个set nu
:显示行号set nonu
:取消显示行号nu
:当前行号
S3 命令语句
3.1 关机、重启、同步
3.1.1 关机
shutdown
:默认1min后关机shutdown -h 2
:2min后关机shutdown -h now
:立刻关机halt
:同上
3.1.2 重启
shutdown -r now
:立刻重启reboot
:同上
3.1.3 同步
sync
:将内存数据同步到硬盘
3.2 用户和组操作
3.2.1 用户
su - 用户名
:切换账号logout
:退出当前账号(图形界面无效)useradd 用户名
:添加账户(默认在 /home 下新建用户文件夹)useradd -d /home/文件夹名 用户名
:在指定文件夹下添加用户passwd 用户名
:给指定用户添加密码userdel 用户名
:删除用户,但保留home下目录userdel -r 用户名
:湮灭用户id 用户名
:查询用户信息whoami
:显示最开始登录的用户信息
3.2.2 组
groupadd 组名
:新增组groupdel 组名
:删除组useradd -g 组名 用户名
:在特定的组名添加指定用户(不指定组的话自动个人一组,组名与用户名相同)usermod -g 组名 用户名
:修改用户的组
3.3 运行级别
init 级别数
:切换级别模式systemctl get-default
:查看默认运行级别systemctl set-default XXX.target
:设置默认级别为XXX
3.4 文件目录指令
-
pwd
:显示当前绝对路径 -
ls 选项 目标
:显示目标内容
选项:-a
:显示隐藏;-l
:按行显示 -
cd
:切换目录指令
cd ~
:返回当前用户的home目录(root用户返回root目录)
cd ..
:返回上一级 -
mkdir 选项 目录名
:创建单级目录
选项:-p
:创建多级目录 -
rmdir 目录名
:删除空目录 -
rm -rf 目标
:强制递归删除目标(-r
:递归、f
:强制) -
cp 源 目标
:复制
cp -r 源 目标
:整体复制 -
mv 源 目标
:重命名 & 移动 -
cat 文件
:不可修改地查看文件内容
cat -n 文件
:显示行号查看 -
touch
:修改文件或目录的时间属性,若文件不存在则新建文件 -
echo
:输出内容到Console -
ln -s 源 软连接名
:软连接,类似快捷方式 -
date
:时间 -
cal
:日历 -
find 目标 选项
-
locate
:定位文件路径(首次使用前要updatedb
) -
grep
:过滤查找
-
gzip
:压缩成.gz -
gunzip
:解压.gz文件 -
zip
:压缩成.zip -
unzip
:解压.zip -
tar
:压缩、解压.tar.gz
-
rpm
:(redhat package manager)软件包操作 -
yum
:( Yellow dog Updater, Modified)一个前端软件包管理器,基于rpm可以从指定服务器自动下载rpm包,并处理依赖关系,Ubuntu是apt(Advanced Packaging Tool)
3.5 权限管理
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 指令
lsblk
–(list block):查看所有设备挂载情况lsblk -f
:fdisk 磁盘硬件目录
:增加磁盘mkfs
:分区格式化mount
:挂载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编写的脚本程序。
6.2 脚本语法格式
- 以
#!/bin/bash
开头,bash是shell的一种,国内一般都是用bash #!
为约定标记,告诉系统这个脚本用什么解释器执行,用那周shell#
为单行注释-
:<<EOF 注释内容... 注释内容... 注释内容... EOF
为多行注释,其中EOF可以用别的符号代替,但是结尾必须于其一致
6.3 脚本执行(需要x权限)
- 相对路径:
./脚本名.sh
- 绝对路径:
绝对路径/脚本名.sh
- sh执行:(可以没有x权限)
sh 脚本名.sh
6.4 Shell变量
分为系统变量和用户自定义变量
6.4.1 系统变量
$HOME, $PWD, $SHELL, $USER
等
6.4.2 用户自定义变量
- 定义变量:
变量=值
,注意不能有空格 - 撤销变量:
unset 变量
- 静态变量:
readonly 变量=值
,此变量不可撤销 - 使用变量:
$变量
&${变量}
,注意$符号,{}为好习惯
6.4.3 字符串
- 单引号:
- 变量无效
- 不可出现转义字符
- 拼接字符串 :
$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 最常用。
$((运算表达式))
$[运算表达式]
(推荐)
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