From 3e280037c0f7966f2843903066d6ca666f87b702 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E7=8E=89=E7=8E=B2?= <3370142780@qq.com> Date: Fri, 14 Jun 2024 00:00:58 +0800 Subject: [PATCH] =?UTF-8?q?Linux=E5=9F=BA=E7=A1=8013?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...50\243\205ssl\350\257\201\344\271\246).md" | 120 ++++ ...\247\201Linux\345\221\275\344\273\244).md" | 610 ++++++++++++++++++ 2 files changed, 730 insertions(+) create mode 100644 "29\351\203\221\347\216\211\347\216\262/12(\351\205\215\347\275\256\345\256\211\350\243\205ssl\350\257\201\344\271\246).md" create mode 100644 "29\351\203\221\347\216\211\347\216\262/13(\345\270\270\350\247\201Linux\345\221\275\344\273\244).md" diff --git "a/29\351\203\221\347\216\211\347\216\262/12(\351\205\215\347\275\256\345\256\211\350\243\205ssl\350\257\201\344\271\246).md" "b/29\351\203\221\347\216\211\347\216\262/12(\351\205\215\347\275\256\345\256\211\350\243\205ssl\350\257\201\344\271\246).md" new file mode 100644 index 0000000..a88456a --- /dev/null +++ "b/29\351\203\221\347\216\211\347\216\262/12(\351\205\215\347\275\256\345\256\211\350\243\205ssl\350\257\201\344\271\246).md" @@ -0,0 +1,120 @@ +# 搭建服务器 + +以下代码实现用nginx上传web服务器网页: + +1.连接服务器:ssh root@域名 + 输入密码 + +2.安装 这个:apt install nginx(只要弄一次) + +``` + systemctl status nginx //命令用于查看nginx服务的运行状态 + systemctl start nginx // 启动nginx服务 + systemctl stop nginx // 停止nignx服务 + systemctl enable nginx // 将nginx服务设置为开机自动启动 + systemctl disable nginx //将nginx服务设置为禁止开机自启动 +``` + +3.输入 cd /var/www + +4.创建一个文件夹: mkdir 文件夹名称(有用建议用域名来) + +5.用vs code 创建index.html + 做好网页,打开终端(按ctrl+~) + +6.输入scp .\index.html root@域名:/var/www/自己创建的文件夹名称 + + 如scp .\index.html root@www.qing05.com:/var/www/qing05.com + +7.先输入 cd /etc/nginx/conf.d + + 再输入 vim 域名.conf + + 先i启用编辑在输入以下内容: + +``` +server { + listen 80; #监听端口,一般80端口 + server_name 域名; #绑定域名 + location / { + root /var/www/自己创建的文件夹名称; #网站文件的目录 + index index.html; #默认的网页最后中的首页 + } + } +``` + +输入以上代码按ESC退出编辑,在输入:wq保存 + +9.在创建的文件夹输入 cat index.html 可以查看提交的html文档 + +10.nginx -s reload //用于重置加载配置,不重启nginx下 + +11.在浏览器输入自己的域名即可看见网页 + +命令: + +打开文件夹:cd /文件夹名称 + +查看文件夹里面所有文件:dir + +查看文件内容:cat 文件名称 + +创建文件夹:mkdir 文件夹名称 + +创建文件:touch 文件名称 + +删除文件夹:rmdir 文件夹名称 + +删除文件:rm 文件名称 + + + +# 获取证书 + +1.先获取证书 + +​ 后缀一般为.key和.pem + +​ 如果域名是阿里云的可以免费获取证书,其余的自行问百度 + +2.上传证书至服务器中: + +​ cd /etc/nginx + +​ 在新建文件夹:mkdir cert(文件名随意) + +​ 上传后缀为.key和.pem的证书(一般有两个) + +​ 上传可以用vs code + +3.在cd /etc/nginx/conf.d中创建一个为ssl.conf(文件名随意后缀必须为.conf) + +​ vim ssl.conf编辑输以下代码 + +``` +server{ + # 输入普通地址时,跳转到https地址 + listen 80; + server_name qing05.com; #域名 + return 301 https://qing05.com$request_uri; #域名 +} + +server{ + listen 443 ssl; #监听的端口 + server_name qing05.com; #监听的域名 + + ssl_certificate /etc/nginx/cert/qing05.com.pem; #文件证书位置(.pem) + ssl_certificate_key /etc/nginx/cert/qing05.com.key; #文件证书位置(.key) + + location / { + root /var/www/www.qing05.com; #网站所在路径(自己之前访问index的文件夹) + index index.html; #默认的首页文件 + } +} +``` + +​ 输入以上代码按ESC退出编辑,在输入:wq保存 + +4.nginx -s reload //用于重置加载配置,不重启nginx下 + +​ diff --git "a/29\351\203\221\347\216\211\347\216\262/13(\345\270\270\350\247\201Linux\345\221\275\344\273\244).md" "b/29\351\203\221\347\216\211\347\216\262/13(\345\270\270\350\247\201Linux\345\221\275\344\273\244).md" new file mode 100644 index 0000000..83c676f --- /dev/null +++ "b/29\351\203\221\347\216\211\347\216\262/13(\345\270\270\350\247\201Linux\345\221\275\344\273\244).md" @@ -0,0 +1,610 @@ +13(常见Linux命令) + +1.time + +作用:用于测量命令的执行时间 + +核心术语: + +- real:总的时间 +- user:用户态CPU时间 +- sys:内核态CPU时间 + +实例 + +time ls + +2.date + +作用:显示或设置系统日期和时间 + +核心术语: + +- %Y:四位数的年份 +- %m:两位数的月份 +- %d:两位数的日期 + +```JS +示例 + +date “+%Y-%m-%d %H:%M:%S” +输出: +2024-06-10 15:30:00 +``` + +3.timedatectl + +作用:查看和设置系统时间和日期,时区和NTP(网络时间协议)设置。 + +核心术语: + +- NTP:网络时间协议,用于同步时间 +- RTC:实时时钟 + +```js +示例 + +timedatectl status + +输出: +Local time: Mon 2024-06-10 15:30:00 UTC +Universal time: Mon 2024-06-10 15:30:00 UTC +RTC time: Mon 2024-06-10 15:30:00 +Time zone: Etc/UTC (UTC, +0000) +System clock synchronized: yes +NTP service: active + +``` + +4.reboot + +使用场景:重新启动系统 + +核心术语: + +- systemd:系统和服务管理器 + +示例: + +```js +sudo reboot +``` + +5.poweroff + +作用:关闭系统电源 + +核心术语: + +- halt 停止系统所有的CPU功能 + +示例: + +sudo poweroff + +6.wget + +作用: + +- URL:统一资源定位符 +- HTTP/HTTPS:超文本传输协议 + +```js +示例: + +wget https://example.com/file.txt +``` + +7.curl + +作用:从网络上获取或发送数据 + +核心术语: + +- URL:统一资源定位符 +- GET/POST:HTTP请求方法 + +```JS +示例: +curl -0 https://example.com/file.txt + +``` + +8.ps + +作用:查看当前运行的进程 + +核心术语: + +- PID:进程标识符 +- TTY:终端类型 + +```js +示例: +ps aux #显示所有用户的所有进程 一般会结合grep、awk等过滤数据 +``` + +9.kill + +作用:向进程发送信号(通常用于终止进程) + +核心术语: + +- SIGTERM::请求终止进程 +- SIGKILL:强制终止进程 + +```js +示例: +kill 1234 # kill 进程号,用pidof进程名。来查看具体的进程的进程号 +``` + +10、kill all + +作用:向指定名称的所有进程发送信号 + +先安装psmisc + +1.安装psmisc后,就会有pstree和killall + +核心术语: + +- signal:信号,通知进程执行某种操作 + +```js +示例: + +killall firefox +``` + +11.ip + +使用场景:显示和操作网络接口和路由 + +核心术语: + +- address:ip地址 +- route:路由信息 + +示例: + +```js +ip addr show +``` + +12.ss + +作用:显示套接字统计信息。旧版是netstat + +核心术语: + +- TCP:传输控制协议 +- UDP:用户数据报协议 + +示例: + +```js +ss -tuln #可以查看哪些端口开放着 +``` + +13.uname + +作用:显示系统信息 + +核心术语: + +- kernel:操作系统内核 +- OS:操作系统 + +示例: + +uname -a + +14.uptime + +作用:显示系统运行时间和负载 + +核心术语: + +- load average:系统平均负载 + +示例: + +uptime + +15.who + +作用:显示当前登录的用户信息 + +核心术语: + +- login:用户登录信息 +- TTY:终端类型 + +示例: + +who + +16.last + +作用:显示系统上最近的登录信息 + +核心术语: + +- wtmp:记录登录和注销事件的文件 + +示例: + +last + +17.ping + +作用:测试网络连通性 + +- ICMP:互联网控制消息协议 +- echo request:回显请求 + +示例: +ping example.com + +18.traceroute + +作用:显示到达网络主机的路径 + +核心术语: + +- hop:从一个网络节点到另一个的跳转 +- ttl:生存时间 + +示例 + +traceroute example.com + +19.history + +作用:显示命令历史记录 + +核心术语: + +- bash history:记录用户输入的命令历史 + +示例: + +history + +top命令用于显示系统的运行进程信息,包括CPU占用情况、内存占用情况、进程列表等。通过top命令可以实时监控系统的运行状态,了解系统的负载情况。 + +pidof命令用于根据进程名查找对应的进程ID(PID)。例如,如果你知道某个进程的名字,但不知道它的PID,你可以使用pidof命令来查找。语法通常是pidof<进程名>,比如pidof python会返回所有名为python的进程的PID. + + + +free和 df- h 是两个用于查看系统资源利用情况的常用命令: + +1.free:该命令用于显示系统内存的使用情况,包括物理内存和交换空间(swap)。执行free命令时,会显示系统的内存信息,包括总内存、已使用内存、空闲内存以及缓冲区和缓存等情况。 + +输出字段含义如下: + +- total:总内存量 +- used:已经使用的内存量 +- free:空闲的内存量 +- shared:用于共享的内存量 +- buff/cache:用于缓存的内存量 +- available:可用的内存量 + +2.df-h:该命令用于显示文件系统的磁盘空间利用情况。执行df-h命令时,会显示系统中每个挂载的文件系统的磁盘使用情况,包括总容量、已使用空间、剩余空间以及挂载点等信息。 + +输出字段的含义如下: + +- Filesystem:文件系统设备 +- Size:文件系统总容量 +- Used:已使用的空间 +- Avail:可用空间 +- Use%:使用百分比 +- Mounted on:挂载点 + +1.查看当前目录的磁盘使用情况: + +复制代码 + +du -h + +这将以人类可读的格式显示当前目录及其所有子目录的磁盘使用情况。 + +2.查看特定目录的磁盘使用情况: + +```js +du -h /目录名 +``` + +这将显示指定目录及其所有子目录的磁盘使用情况。 + +3.显示文件或目录的总磁盘使用量: + +```js +du -sh /path/to/directory +``` + +这将显示指定文件或目录的总磁盘使用量,-s 参数表示仅显示总和,-h 表示以人类可读的格式显示。 + +4.显示目录中每个文件的磁盘使用量: + +复制代码 + +```js +du -ah /path/to/directory +``` + +这将显示指定目录中每个文件的磁盘使用量,-a 参数表示包括所有文件。 + +5.按照磁盘使用量排序显示目录: + +```js +du -h | sort -h +``` + +这将按照磁盘使用量从小到大排序显示当前目录及其所有子目录的磁盘使用情况。 + +6.限制显示的深度: + +```js +du -h --max-depth=1 /path/to/directory +``` + +这将仅显示指定目录的直接子目录的磁盘使用情况, --max-depth 参数用于指定显示的深度 + + + + + +重定向和管道 + +在Unix和Linux系统中,文件描述符用于表示打开的文件或者输入/输出流。常用的文件描述符包括>、>>、<、2>、&>等。 + +输出重定向 + +1.输出覆盖重定向> + +将命令的标准输出重定向到一个文件,如果文件已经存在,则覆盖它。 + +```js +ls >filelist.txt +//这个命令将ls命令的输出保存到filelist.txt文件中,如果文件已经存在,则会被覆盖 +``` + +2.追加输出重定向>> + +将命令的标准输出追加到一个文件的末尾,如果文件不存在,则创建它 + +```js +echo "Hello,World" >>greentings.txt +//这个命令会将"Hello,World"追加到greenings.txt文件中。 +``` + +3.注意:标准输出中不含有错误信息 + +输入重定向 + +1.输入重定向< + +将文件的内容作为命令的输入 + +```js +sort < unsort_list.txt +#原文件 +apple +orange +banana +//这个命令将'unsort_list.txt'文件的内容作为'sort'命令的输入并排序 +``` + +场景:将SQL脚本文件中读取命令并在数据库中执行。 + +```js +# 示例: +mysql -u root -p mydatabase < script.sql +#该命令将 script.sql 文件中的SQL命令导入到 mydatabase 数据库中。 +# 还原数据库常用的命令 +``` + +#### 错误重定向 + +```js + 参考:find / -name '*.conf' +``` + +1. **错误输出重定向 `2>`** + + 将命令的错误输出重定向到一个文件。 + + ```bash + reboot 2> error_log.txt + ``` + + 这个命令会将 `ls` 命令的错误信息保存到 `error_log.txt` 文件中。 + +2. **错误输出追加重定向 `2>>`** + + 将命令的错误输出追加到一个文件。 + + ```bash + ls non_existent_file 2>> error_log.txt + ``` + + 这个命令会将 `ls` 命令的错误信息追加到 `error_log.txt` 文件中。 + +3. **同时重定向标准输出和标准错误输出** + + 使用 `&>` 符号将标准输出和错误输出同时重定向到同一个文件。 + + ```bash + command &> output_and_error_log.txt # 正确和错误原版混搭,原封不动 + command > 1.txt 2>&1 # 正确和错误原版混搭,原封不动 + command > 1.txt 2>> 1.txt # 先正确后错误 + command 2> 1.txt >> 1.txt # 先错误后正确 + + ``` + + 这个命令会将 `command` 的标准输出和错误输出都保存到 `output_and_error_log.txt` 文件中。 + +### 管道 `|` + +管道符号 `|` 将一个命令的输出作为另一个命令的输入。管道是进行命令链式操作的重要工具。 + +#### 使用场景 + +1. **将命令的输出传递给另一个命令** + + ```bash + ls -l | grep "txt" + ``` + + 这个命令会将 `ls -l` 的输出传递给 `grep "txt"`,只显示包含 "txt" 的行。 + +2. **多命令链式操作** + + ```bash + ps aux | grep "sshd" | awk '{print $2}' + ``` + + 这个命令链会列出所有进程 (`ps aux`),然后过滤包含 "sshd" 的行 (`grep "sshd"`),最后提取进程 ID (`awk '{print $2}'`)。 + +### 示例解析 + +#### 使用管道和重定向的综合示例 + +1. **查找特定文件并将结果保存到文件** + + ```bash + find / -name "*.conf" 2> errors.txt | sort > sorted_log_files.txt + ``` + + 这个命令会在根目录下查找所有以 `.log` 结尾的文件,将错误信息重定向到 `errors.txt`,并将结果进行排序后保存到 `sorted_log_files.txt`。 + +### 总结 + +- **重定向**: + - `>`:将输出重定向到文件(覆盖)。 + - `>`:将输出追加到文件。 + - `<`:将文件内容作为输入。 + - `2>`:将错误输出重定向到文件。 + - `2>>`:将错误输出追加到文件。 + - `&>`:将标准输出和错误输出同时重定向到文件。 + - `&>>`:将标准输出和错误输出同时追加重定向到文件。 + +- **管道 `|`**: + - 将一个命令的输出作为另一个命令的输入,用于链式操作。 + + + +**扩展:** + +- 输入输出一起使用的情况 + + ```basn + sort < unsorted_list.txt > sorted_list.txt + ``` + +- + +- **重定向标准输出和错误输出到不同文件:** + + - 若要将标准输出重定向到一个文件,将错误输出重定向到另一个文件,可以使用以下命令: + + ```sh + command > output.txt 2> error.txt + ``` + + 这样,标准输出会被写入 `output.txt`文件,而错误输出则会被写入`error.txt` + + 文件。 + +- **将错误输出追加到标准输出文件中:** + + - 若要将错误输出追加到标准输出文件中,可以使用以下命令: + + ```bash + command > output.txt 2>&1 + # 等效谁? + ``` + + 这会将标准输出写入`output.txt`文件,同时将错误输出追加到标准输出文件中。 + +- **将错误输出丢弃:** + + - 若要忽略错误输出,可以将错误输出重定向到特殊设备 `/dev/null + ` + + ,例如: + + ```bash + command 2> /dev/null + ``` + + 这会将错误输出发送到 `/dev/null + `,从而丢弃错误输出而只保留标准输出 + + + +## 思考: + +``` +<< 是什么功能?here document +()把命令包括起来,是干什么功能? +``` + + + +补充一个实用命令: + +`tee` 是一个在Unix和类Unix操作系统上非常有用的命令行实用程序。它的作用是从标准输入中读取数据,并同时将数据输出到标准输出和一个或多个文件中。 + +下面是 `tee` 命令的基本语法: + +```bash +tee [OPTION]... [FILE]... +``` + +- `[OPTION]`: 一些选项,可以控制 `tee` 命令的行为。 +- `[FILE]`: 一个或多个文件名,表示要将数据写入的目标文件。 + +### 示例 1:简单的使用方式 + +```bash +echo "Hello, world" | tee output.txt +``` + +在这个示例中,`echo "Hello, world"` 命令的输出被送到 `tee` 命令,然后 `tee` 将这个输出写入到 `output.txt` 文件,并同时将其输出到标准输出。 + +### 示例 2:同时写入多个文件 + +```bash +echo "Hello, world" | tee file1.txt file2.txt +``` + +在这个示例中,`tee` 命令将 `Hello, world` 写入到 `file1.txt` 和 `file2.txt` 文件中,并同时将其输出到标准输出。 + +### 示例 3:追加写入文件 + +```bash +echo "New data" | tee -a file1.txt +``` + +通过 `-a` 选项,`tee` 命令将数据追加写入到 `file1.txt` 文件中,而不是覆盖原有内容。 + +### 示例 4:结合重定向和管道 + +```bash +command1 | tee >(command2) | command3 +``` + +在这个示例中,`command1` 的输出被送到 `tee` 命令,然后 `tee` 将输出传递给 `command2`,并且同时将输出发送到 `command3`。这种结构可以用于复杂的管道命令中。 + +### 选项 + +- `-a`:追加写入文件而不是覆盖。 +- `-i`:忽略中断信号。 +- `--help`:显示帮助信息和选项列表。 +- `--version`:显示版本信息。 + +### 总结 + +`tee` 命令是一个灵活而强大的工具,可以用于在命令行中处理数据流,同时向多个文件写入数据。 \ No newline at end of file -- Gitee