diff --git "a/\351\231\210\346\264\201\346\242\205/20240619-\347\216\257\345\242\203\345\217\230\351\207\217.md" "b/\351\231\210\346\264\201\346\242\205/20240619-\347\216\257\345\242\203\345\217\230\351\207\217.md" new file mode 100644 index 0000000000000000000000000000000000000000..7be932f2ad14414f9f1326a84f9a42fc1ce6efa4 --- /dev/null +++ "b/\351\231\210\346\264\201\346\242\205/20240619-\347\216\257\345\242\203\345\217\230\351\207\217.md" @@ -0,0 +1,129 @@ +## 环境变量 + + + +### 环境变量的类型和作用 + +1. 用户级别环境变量 + + - 存储在用户家目录的个人配置文件中,例如 `~/.bashrc`、`~/.profile`。 + - 用于定义**用户个性化**的Shell设置,如别名、路径等。针对不同用户独立设置 + + + +2. 系统级别环境变量 + - 存储在系统范围的配置文件中,如 `/etc/environment`、`/etc/profile` 。/etc/profile.d目录 + - 为**所有用户和系统服务**提供全局的环境设置。java_home、python + + + +### 环境变量的加载顺序和文件 + +- 系统启动加载:/etc/environment ,一开源就加载,初始化 + + - **登录Shell加载顺序**: + - 首先加载 `/etc/profile`,然后根据用户登录方式加载 `~/.profile`(存在性依次加载)。 + - 非登录shell: su 切换用户 等 source + + - **交互式Shell加载顺序**: + - 加载 `~/.bashrc` 或类似文件,用于设置用户个性化的Shell环境。 + - 不同的shell加载不同的文件,bash才加载.bashrc,zsh加载.zshrc + - 交互式:提供命令行窗口,非交互式:直接写在脚本里 + - **总结来说** + - 配置文件的理论加载顺序通常是 `/etc/environment` > `/etc/profile` > `~/.profile` > `~/.bashrc`。【实验】 + + + +### 设置环境变量的方法 + +1. 设置变量的位置:命令行(临时),脚本文件(永久) + +2. 用户级别的: 编辑用户的 `~/.bashrc` 或 `~/.profile` 文件 + + + +### 环境变量的设置和使用 + +1. 设置路径变量(PATH) + +```bash +# 在 ~/.bashrc 中添加 +export PATH=$PATH:/path/to/your/scripts +``` +2. 定义Java环境变量(JAVA_HOME) + +```bash +# 在 ~/.bashrc 或 /etc/environment 中添加 +export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 +export PATH=$JAVA_HOME/bin:$PATH +``` + +3. 设置代理服务器(HTTP_PROXY、HTTPS_PROXY) + +```bash +# 在 ~/.bashrc 中添加 +export HTTP_PROXY=http://proxy.example.com:8080 +export HTTPS_PROXY=http://proxy.example.com:8080 +``` + +4. 配置编辑器(EDITOR) + + ```bash + # 在 ~/.bashrc 中添加 + export EDITOR=/usr/bin/vim + ``` + +5. 设置语言和地区(LANG、LC_系列变量) + + ```bash + # 在 ~/.bashrc 或 /etc/environment 中添加 + export LANG=en_US.UTF-8 + export LC_ALL=en_US.UTF-8 + ``` + +6. 自定义命令别名(alias) + + ```bash + # 在 ~/.bashrc 中添加 + alias ll='ls -alF' + alias grep='grep --color=auto' + ``` + +7. 设置临时环境变量 + +```bash +# 临时设置变量 +export MY_VAR="value" +``` + + + + + +## 常用环境变量 + +打印所有环境变量 + +```bash +printenv +# 或 +env +``` + + + +**系统级** + +* `PATH` 可执行文件的搜索路径 +* `LANG` 定义系统的语言环境和字符集, export LANG=zh_CN.utf8,编辑文件不乱码 +* `LANGUAGE` 用于设置消息语言的优先级 ,提示语言为中文 +* `EDITOR` 默认文本编辑器 editor + + + +**用户级** + +* **`HOME`** :当前用户的主目录 +* **`USER`**:当前用户名 +* **`UID`**:当前用户的用户ID +* **`SHELL`**:当前用户的默认Shell diff --git "a/\351\231\210\346\264\201\346\242\205/20240619-\347\216\257\345\242\203\345\217\230\351\207\217\347\273\203\344\271\240.md" "b/\351\231\210\346\264\201\346\242\205/20240619-\347\216\257\345\242\203\345\217\230\351\207\217\347\273\203\344\271\240.md" new file mode 100644 index 0000000000000000000000000000000000000000..d9a74b08a7c08b10b24eb425f7e92334059ffc44 --- /dev/null +++ "b/\351\231\210\346\264\201\346\242\205/20240619-\347\216\257\345\242\203\345\217\230\351\207\217\347\273\203\344\271\240.md" @@ -0,0 +1,113 @@ +### 练习题 1: 显示当前所有的环境变量 + +* 使用`printenv`或`env`命令来显示所有的环境变量。 + + +```bash +evn +``` +### 练习题 2: 显示`HOME`环境变量的值 + +* 使用`echo`命令和`$`符号来显示`HOME`环境变量的值。 + + +```bash +echo $HOME +``` +### 练习题 3: 临时设置一个新的环境变量 + +* 设置一个名为`MY_AGE`的环境变量,并将其值设置为`18`。 + + +```bash +MY_AGE=18 +``` +### 练习题 4: 显示新设置的环境变量 + +* 使用`echo`命令来显示`MY_AGE`的值。 + + +```bash +echo $MY_AGE +``` +### 练习题 5: 在新的shell会话中检查环境变量 + +* 打开一个新的终端窗口或标签页,并尝试显示`MY_AGE`的值。你会看到什么?为什么? + +```bash +MY_AGE的 值显示为空白 +因为MY_AGE的值是临时的环境变量,它只是局部变量,因此打开一个新的终端窗口或标签页看不见MY_AGE的值 +``` + + + +### 练习题 6: 修改`PATH`环境变量 + +* 将`你当前用户的家目录`添加到你的`PATH`环境变量的末尾位置 + + +```bash +export PATH=$PATH:/home/xc/ +``` +将`/tmp`添加到你的`PATH`环境变量的开始位置,(注意:这可能会覆盖其他路径中的同名命令,所以请谨慎操作)。 + +```bash +export PATH=tmp:$PATH +``` + +### 练习题 7: 验证`PATH`的修改 + +* 使用`echo`命令显示`PATH`的值,并确认`前面添加的目录`已经被添加到对应位置。 + + +```bash +echo $PATH +``` +### 练习题 8: 永久设置环境变量 + +* 在你的shell配置文件中(如`~/.bashrc`、`~/.bash_profile`、`~/.zshrc`等,取决于你使用的shell和配置)添加一行来永久设置`MY_NAME`,值设置为`奥德彪`。 + +例如,对于bash shell,你可以使用: + + +```bash +export MY_NAME=奥德彪 +``` +如何让`MY_NAME`生效,并验证 + +```bash +source .bashrc +``` + +### 练习题 9: 清理 + +* 清除你之前设置的`MY_AGE`和`PATH`的修改(如果你不想永久保留它们)。 + + +```bash +unset MY_AGE +source .bashrc +``` +### 练习题 10: 修改默认器 + +* 使用`EDITOR`变量,修改你默认的编辑器为nano。 + + +```bash +export EDITOR=nano +``` + +### 练习题 11: 修改语言 + +* 使用`LANG`变量,让你的文件支持中文和utf8编码来避免乱码。 + +```bash +export LANG=zh_CN.utf8 +``` + +- 使用`LANGUAGE`变量,让你的命令提示为中文 + +```bash +export LANGUAGE=zh_CN.utf8 +``` + diff --git "a/\351\231\210\346\264\201\346\242\205/20240620-\350\277\233\347\250\213.md" "b/\351\231\210\346\264\201\346\242\205/20240620-\350\277\233\347\250\213.md" new file mode 100644 index 0000000000000000000000000000000000000000..f5d8b0a6eb64783f326d8b1f10f68fb722ae4708 --- /dev/null +++ "b/\351\231\210\346\264\201\346\242\205/20240620-\350\277\233\347\250\213.md" @@ -0,0 +1,64 @@ +## 进程 + +### ps命令 + +```bash +# 查看当前终端下的活动进程 +ps +ps aux # 查看系统中所有的活动进程 +ps -ef # 以全格式显示所有进程 +ps -u 进程名 # 以全格式显示所有进程 +ps -f # 显示完整格式 +ps -eo # 自定义显示进程信息 +``` + + + +### top命令 + +```bash +top # 实时显示系统中各个进程的资源占用情况 +``` + + + +htop命令 + +```bash +htop # 比top更高级的进程查看器,需要先安装(sudo apt-get install htop) +htop 进程名 +``` + + + + + +### pgrep命令 + +```bash +pgrep # 通过进程名查找进程 +pgrep rocess_name +pgrep -u 用户名 # 查找特定用户的所有进程 +pgrep -P ID名 # 查找特定进程ID的进程 +pgrep -l -f 用户名 # 查找并显示进程ID和进程名 +pgrep -d '' -f 用户名 # 查找并显示进程的详细信息 +``` + + + +### pstree命令 + +```bash +pstree # 以树状图显示进程 +``` + + + +### kill 命令 + +```bash +kill # 终止进程,需要指定进程ID +kill -9 进程名 +killall -9 进程名 +``` + diff --git "a/\351\231\210\346\264\201\346\242\205/20240622-\346\234\215\345\212\241\347\256\241\347\220\206.md" "b/\351\231\210\346\264\201\346\242\205/20240622-\346\234\215\345\212\241\347\256\241\347\220\206.md" new file mode 100644 index 0000000000000000000000000000000000000000..0c9569a8ff1f8c30b1be539d66cbf92849b0f724 --- /dev/null +++ "b/\351\231\210\346\264\201\346\242\205/20240622-\346\234\215\345\212\241\347\256\241\347\220\206.md" @@ -0,0 +1,41 @@ +## 服务管理 + + + +### 什么是服务 + +- 服务是在Linux系统中后台运行的程序或进程,它们负责提供特定的功能和服务,例如Web服务、数据库服务、邮件服务等。 +- 服务通常以守护进程(daemon)的形式运行,可以在系统引导时自动启动,并持续在后台运行以响应请求或执行特定任务。 + + + + + +### 服务管理的一些命令 + + + +| 相关命令 | 启用 | 关闭 | 重启 | 重载配置 | 开机 | 状态 | 语法 | +| ------------ | ----- | ---- | ------- | -------- | ------ | ------ | ----------------------- | +| systemctl | start | stop | restart | reload | enable | status | systemctl start nginx | +| service | start | stop | restart | reload | enable | status | server start nginx | +| /etc/init.d/ | tart | stop | restart | reload | enable | status | /etc/init.d/nginx start | + + + + + +### 如何配置服务 + +- 新建服务文件通常是指为特定的系统服务创建一个配置文件,该文件用于定义服务的启动、停止、重启等行为,以及相关的依赖关系和安装设置 + +- 新建服务文件是Linux系统服务管理的一个重要步骤,通过定义服务的行为、依赖关系和安装设置,可以实现服务的定制化和统一管理。服务文件通常放置在`/usr/lib/systemd/system/`目录下,并使用`.service`作为扩展名。服务文件的内容结构包括`[Unit]`、`[Service]`和`[Install]`三个部分,分别用于定义服务的描述、启动和停止行为以及安装设置。 + +- 新建服务文件的目的 + +1. 定制服务行为:通过新建服务文件,可以根据具体需求定制服务的启动脚本、运行参数等。 +2. 统一管理:将服务配置文件集中放置在特定目录下(如`/usr/lib/systemd/system/`),方便系统管理员统一管理和配置服务。 + +- 新建服务文件的位置 + +服务配置文件通常放置在`/usr/lib/systemd/system/`目录下。在这个目录下,可以创建以`.service`为扩展名的文件来定义新的服务。 \ No newline at end of file