Linux 必备基础知识与常用命令大汇总

这是我整理的关于Linux基础知识的笔记,主要为了方便在长期不用Linux的情况下,突然需要使用时可以快速查找。我最初有些犹豫是否应该写成文章,但我认为对于处于相似境遇的人来说,能够方便地复制和使用这些知识会很有帮助,所以决定将其分享出来。

虽然MacOS不是Linux,而是BSD系系统,但我在文中简要介绍了一些与包管理相关的内容。由于不包括CentOS7等系统的相关内容,如果有人能提供编辑建议或请求修改,将不胜感激。

个人设置文件

这些配置文件位于主目录中。 

位置意义
.bash_profile登录时加载,仅在用户登录时被读取和执行。
.bashrc每次启动新的shell时加载

二进制文件和库文件的位置参考

位置意义
/bin存放基本的系统命令的二进制文件,这些命令是系统启动和修复所需的基础工具
/sbin存放基本的系统管理和维护命令的二进制文件,这些命令主要用于系统管理员进行系统维护和配置
/lib包含系统基本库文件,这些库文件是 /bin/sbin 中的二进制文件运行所必需的。
/usr/bin包含用户程序所需的库文件,支持 /usr/bin 中的程序运行。
/usr/sbin存放非基本的系统管理和维护命令的二进制文件。这些命令通常用于系统管理员执行更高级的系统管理任务
/usr/lib包含与 /lib 中的库文件功能相同,但主要用于用户空间的程序和应用程序。这些库文件支持 /usr/bin 中的程序运行。
/usr/includeC语言的包含头文件
/usr/libexec内部调用的辅助命令
/usr/local自己编译的程序文件存放的位置(以下同样适用)
/usr/local/bin
/usr/local/lib
/usr/local/include
/usr/local/opt
/usr/src/内核源代码和头文件
/opt/local/bin通常用于软件包(主要是二进制blob)的安装位置。
/opt/local/lib通常用于安装软件包(主要是二进制blob)的目录。
/etc各种应用程序的配置文件
/var/log应用程序日志输出的位置
/var/www/html通常用作Web服务器的文档根目录。

包管理命令 

发行版命令
RedHat系yum
Macbrew
Debian系apt-get

所有软件包更新

apt-get update && apt-get dist-upgradeyum updatebrew upgrade

软件包安装的位置

因软件包而异。

发行版调查方法
ubuntudpkg -L package名
redhat(yum也是相同的)rpm -ql package名
MacOSX安装在“/usr/local/Cellar”并链接到“/usr/bin”

自己编译源代码

从网上获取并解压后进行编译的情况

wget http://目标源代码.tar.gz
tar -xvf 目标源代码.tar.gz
cd 目标源代码
./configure
make
sudo make install

如果要自定义安装位置,可以使用:

./configure --prefix=安装位置

使用 gcc 自行编译

编译 test.cc 时:

gcc -L库路径 -I包含文件路径 -l库名 -o 输出二进制名 test.cc

共享库通常命名为 lib~.a,因此在使用 -l 指定时,只需使用 部分即可。

安装软件包时

默认情况下,`/usr/bin` 会被优先搜索,因此可以通过设置 `${PATH}` 使其优先搜索 `/usr/local/bin`。

为了保持系统的整洁,最好将自行编译的源代码安装到通过 `./configure --prefix=安装位置` 指定的目录中,并在每次安装后更新路径。

检查共享库的依赖关系 

 共享库的扩展名是 .so 文件。 可以使用 ldd 命令来检查程序的依赖库。

ldd /bin/cplibc.so.6 => /lib/libc.so.6/lib/ld-linux.so.2 => /lib/ld-linux.so.2

MacOSX的情况

otool -L

查看环境变量列表

printenv

指定路径 

变量名意义
$PATH二进制文件的搜索路径
$LD_LIBRARY_PATH库文件的搜索路径
$C_INCLUDE_PATHC语言的包含路径

按照书写顺序优先搜索并执行。 用 : 分隔,以 ; 结尾。 例如,将 =/usr/local/lib 设置为优先搜索的路径并使其生效。

$ LD_LIBRARY_PATH=/usr/local/lib:/usr/lib;
export LD_LIBRARY_PATH

上述方法是暂时生效的。 要永久生效,请将设置写入 .bash_profile.bashrc 中,然后使用 source 命令使其生效。

vi ~/.bashrc
写入
source ~/.bashrc

解压文件

.tar.gz

tar zxvf filename.tar.gz

.bz2

tar xvfj filename.bz2 

vi 编辑器的基本命令

命令意义
i插入模式
a在光标后插入
x删除光标所在的字符
D删除当前行
q退出
q!强制退出
w保存
wq保存后退出
gg移动到文件开头
:数字移动到指定行
G移动到文件末尾
Ctrl + f移动到下一画面
Ctrl + b移动到上一画面
0移动到行首
$移动到行尾
w移动到下一单词
b移动到上一单词
W移动到下一空白处
B移动到上一空白处
yy复制(指定要复制的行数前加上数字)
p

粘贴(当前行)

P粘贴(光标下方)
dd删除(前面加上数字以指定删除的行数)
u撤销操作
/[文字列]向前搜索
?[文字列]

向后搜索

n下一个匹配项
N上一个匹配项
:%s/替换前字符串/替换后字符串/g置換
:set number行番号表示
:syntax off去除颜色

使用 Git 克隆并提交的步骤

git clone URL
git add index.html
git commit -m "comment"
git push

重做

将工作区和索引(暂存区)恢复到上一个提交状态。

git reset --hard

 获取远程更改

git pull

服务启动和停止

/etc/init.d/服务名 start
/etc/init.d/服务名 stop

或者

service 服务名 start

重启动

/etc/init.d/服务名 restart

始终保持启动

chkconfig 服务名 on

将文件复制到远程机器

scp [选项] 源文件 目标位置

要将当前目录下的 testfile 文件传输到 192.168.1.10user1 用户的主目录,可以使用以下 scp 命令:

scp ./testfile user1@192.168.1.10:~/

如果更改路径的顺序,也可以从远程获取文件。

文件搜索

$ find / -name doc.txt

创建自签名证书

过程中会询问的 CommonName 中输入主机名,其他字段可以随意填写。

# openssl genrsa 2048 > server.key
# openssl req -new -key server.key > server.csr
# openssl x509 -days 3650 -req -signkey server.key < server.csr > server.crt

host名変更

#vi /etc/hosts
127.0.0.1 xxxx localhost 这里进行追記
#vi etc/sysconfig/network
NETWORKING=yes
HOSTNAME=写到这里
GATEWAY=192.168.0.1

生效变更内容

# /etc/rc.d/init.d/network restart

检查正在使用的端口

sudo netstat -anp

检查容量

按分区

df -h

从当前目录递归检查

du -h

调查服务器负载情况

CPU負荷

top

内存

vmstat

其他方式

# uptime
13:35  up 30 mins, 2 users, load averages: 0.07 0.16 0.19

load averages 后面,会显示 1 分钟、5 分钟和 15 分钟的负载平均值。这些数值表示处理的等待时间。处理等待时间可能是由于“CPU 使用率”或“I/O 处理等待”造成的。

如果负载平均值较低但性能未改善,网络可能是一个因素,可以使用 netstat 等工具进行调查。

检查 CPU 使用率和 I/O 等待时间

# sar -u 3 10
13:40:16  %usr  %nice   %sys   %idle
13:40:19    1      0      2     98
13:40:22    1      0      1     98
13:40:25    0      0      1     98
13:40:28    0      0      1     99
13:40:31    1      0      1     98
13:40:34    0      0      1     99
13:40:37    0      0      1     99
13:40:40    0      0      1     99
13:40:43    0      0      1     99
13:40:46    0      0      1     99
Average:      0      0      1     98   
  • %user:用户空间的 CPU 使用率。
  • %nice:由调整优先级的进程在用户空间中使用的 CPU 使用率。
  • %system:内核空间的 CPU 使用率。
  • %iowait:显示 CPU 等待 I/O 处理的时间比例。
  • %idle:CPU 在磁盘 I/O 等待中处于空闲状态的时间比例。

服务器构建时进行的安全设置

LPIC 标准教科书的目录:

  1. 检查软件更新信息
  2. 定期更新正在使用的包
  3. 不安装不必要的软件
  4. 禁用或删除不必要的用户
  5. 根据需要为用户密码设置有效期限
  6. 限制能够获得 root 权限或使用 sudo 的用户
  7. 适当设置文件和目录的访问权限
  8. 适当配置运行级别,避免启动不必要的守护进程
  9. 删除不必要的 SUID 和 SGID
  10. 准确记录日志
  11. 启用数据包过滤(如 iptables),避免接收不必要的数据包
  12. 关闭不必要的端口

cron的設定

crontab -e

格式

# 注释
分 时 日 月 星期 命令或脚本

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/48338.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloud:使用OpenFeign优化前面的Nacos实现高效购物车商品信息处理

在现代电商系统中&#xff0c;购物车的性能直接影响用户的购物体验。为了提升系统性能和用户满意度&#xff0c;我们可以使用Spring Cloud的OpenFeign和负载均衡器来高效地处理购物车中的商品信息。本文将详细介绍如何在Spring Cloud中集成这些组件&#xff0c;并实现一个高效的…

【汽车】常见缩略语说明

缩略语英文名称中文名称3GPP3rd Generation Partnership Project第三代合作伙伴计划5GAA5G Automotive Association5g汽车协会APPApplication应用ADASAdvanced Driver Assistant Systems高级驾驶辅助系统CaaSCarasaService汽车即服务CANController Area Network控制器局域网络C…

Java之数组应用-选择排序-插入排序

已经完全掌握了冒泡排序和二分查找的同学&#xff0c;可以自己尝试学习选择、插入排序。不要求今天全部掌握&#xff0c;最近2-3天掌握即可&#xff01; 1 选择排序 选择排序(Selection Sort)的原理有点类似插入排序&#xff0c;也分已排序区间和未排序区间。但是选择排序每次…

Mysql备份恢复

目录 1.Mysql日志管理 1.1为什么需要日志 1.2日志作用 1.3数据丢失或破坏的原因 1.4常见日志类型之错误日志 1.5常见日志类型之通用查询日志 1.6常见日志类型之慢查询日志 1.7常见日志类型之二进制日志 1.8常见日志类型之事务日志 2.MySQL备份 2.1备份类型 2.2逻辑…

超低功耗ARM Cortex-M33 TZ MCU STM32WBA54、STM32WBA55:通过提升无线性能实现更出色的用户体验

摘要 STM32WBA54、STM32WBA55产品系列同时支持多种无线标准&#xff0c;包括Bluetooth低功耗 5.4&#xff08;已认证&#xff09;、Zigbee、Thread以及可用作Thread边界路由器的Matter。 该产品系列具有出色的灵活性和更强的安全性&#xff0c;可帮助开发人员应对不断变化的无…

新能源汽车的充电网络安全威胁和防护措施

1. 物理攻击&#xff1a;例如恶意破坏、搬走充电设施等&#xff0c;这可能会对充电设施造成损害&#xff0c;妨碍正常的电力传输。 2. 网络攻击&#xff1a; 黑客可能利用系统漏洞攻击网络&#xff0c;破坏设备&#xff0c;并窃取用户的个人信息、支付信息等&#xff1b; 车辆…

24暑假算法刷题 | Day21 | LeetCode 669. 修剪二叉搜索树,108. 将有序数组转换为二叉搜索树,538. 把二叉搜索树转换为累加树

目录 669. 修剪二叉搜索树题目描述题解 108. 将有序数组转换为二叉搜索树题目描述题解 538. 把二叉搜索树转换为累加树题目描述题解 669. 修剪二叉搜索树 点此跳转题目链接 题目描述 给你二叉搜索树的根节点 root &#xff0c;同时给定最小边界low 和最大边界 high。通过修剪…

企业邮件系统管理(二)配置与优化指南

文章目录 企业邮件系统管理&#xff1a;配置与优化指南引言第一部分&#xff1a;了解邮件系统的基础架构一、MTA与MUA的定义及作用二、常见的邮件协议 第二部分&#xff1a;Exchange Server 2010的核心功能一、Exchange Server的服务器角色二、“典型安装”包含的服务器角色三、…

packet_write_wait: Connection to <IP> port <PORT>: Broken pipe

packet_write_wait: Connection to <IP> port <PORT>: Broken pipe 是一个常见的网络错误&#xff0c;指的是尝试向一个已经损坏的 TCP 连接写入数据。下面是这个错误的一些可能原因和解决方法&#xff1a; 可能的原因&#xff1a; 客户端断开连接&#xff1a; 远…

vite环境下使用bootstrap

环境 nodejs 18 pnpm 初始化 pnpm init pnpm add -D vite --registry http://registry.npm.taobao.org pnpm add bootstrap popperjs/core --registry http://registry.npm.taobao.org pnpm add -D sass --registry http://registry.npm.taobao.org新建vite.config.js cons…

【git】如何实现规范git commit -m的格式

.husky/commit-msg #!/usr/bin/env sh . "$(dirname -- "$0")/_/husky.sh"yarn commitlint --edit $1.vscode/settings.json "ahooks","aliyuncs","antd","commitlint", // 新增"deadcode","deno…

用三行代码“偷袭白嫖党”,保护自己的代码(多语言实现)

计算机科学专业的同学们最近遇到了一件烦心事。教授布置了一系列具有挑战性的编程作业&#xff0c;需要大家运用所学知识来完成。然而&#xff0c;一些同学却动起了歪脑筋&#xff0c;想要通过抄袭他人的代码来轻松完成任务。 小李、小王和小张是同宿舍的好友&#xff0c;他们…

第1课:计算机历史与基础——一段跨越时代的技术演进

目录 引言计算机的起源机械计算时代 电子计算机的曙光个人计算机的革命现代计算机的多样化计算机的分类计算机的特点计算机技术的未来发展结语 引言 在数字化浪潮的推动下&#xff0c;计算机已经成为现代社会的中枢神经。它们不仅驱动着我们的工作流程&#xff0c;更深入地影响…

四、GD32 MCU 常见外设介绍(1)RCU 时钟介绍

系统架构 1.RCU 时钟介绍 众所周知&#xff0c;时钟是MCU能正常运行的基本条件&#xff0c;就好比心跳或脉搏&#xff0c;为所有的工作单元提供时间 基数。时钟控制单元提供了一系列频率的时钟功能&#xff0c;包括多个内部RC振荡器时钟(IRC)、一个外部 高速晶体振荡器时钟(H…

【力扣习题】C语言

目录 【876.链表的中间点】 思路&#xff1a; 【83删除排序链表中的重复元素】 思想&#xff1a; 代码&#xff1a; 【876.链表的中间点】 思路&#xff1a; 1、计算链表的长度 2、遍历到链表中间长度并输出值 /*** Definition for singly-linked list.* struct ListN…

如何提升短视频的曝光量和获客效能?云微客来解决

在流量至上的当下&#xff0c;短视频凭借其优势&#xff0c;迅速成为了众多企业获客引流的核心营销手段。进入短视频赛道后&#xff0c;如何提升短视频的曝光量和获客效能&#xff0c;就成为了众多企业亟待解决的焦点。 如果你不想投入大量的广告预算&#xff0c;还想在短视频平…

【GoF23种设计模式+简单工厂模式】

一、设计模式概述与类型 1.1、设计模式的一般定义&#xff1a; 设计模式&#xff08;Design Pattern&#xff09;是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结&#xff0c;使用设计模式是为了可重用代码&#xff0c;让代码更容易被他人理解并且保证代…

【Linux】进程间通信及管道详细介绍(上)

前言 本节我们开始学习进程间通信相关的知识&#xff0c;并详细探讨一下管道&#xff0c;学习匿名管道和命名管道的原理和代码实现等相关操作… 目录 1. 进程间通信背景1.1 进程通信的目的&#xff1a; 2 管道的引入&#xff1a;2.1 匿名管道&#xff1a;2.1.1 匿名管道的原理&…

【中项】系统集成项目管理工程师-第5章 软件工程-5.1软件工程定义与5.2软件需求

前言&#xff1a;系统集成项目管理工程师专业&#xff0c;现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试&#xff0c;全称为“全国计算机与软件专业技术资格&#xff08;水平&#xff09;考试”&…

【数据结构】AVL树(图文解析 + 代码实现)

目录 1、AVL树的概念 2、AVL树结点的定义 3、AVL树的插入 4、AVL树的旋转 4.1 左单旋 4.2 右单旋 4.3 右左双旋 4.4 左右双旋 5、AVL树的验证 6、AVL树的性能 前面对map/multimap/set/multiset进行了简单的介绍&#xff0c;会大仙&#xff0c;这几个容器有个共同点是…