diff --git "a/\351\273\204\346\265\201\346\266\233/20240619 \347\216\257\345\242\203\345\217\230\351\207\217.md" "b/\351\273\204\346\265\201\346\266\233/20240619 \347\216\257\345\242\203\345\217\230\351\207\217.md" new file mode 100644 index 0000000000000000000000000000000000000000..8a8ea9ec28d78d91257dd4238f91e9008af08a5b --- /dev/null +++ "b/\351\273\204\346\265\201\346\266\233/20240619 \347\216\257\345\242\203\345\217\230\351\207\217.md" @@ -0,0 +1,237 @@ +# 笔记 + +### 1. 环境变量的类型和作用 + +- **用户级别环境变量**: + - 存储在用户家目录的个人配置文件中,例如 `~/.bashrc`、`~/.profile`。 + - 用于定义**用户个性化**的Shell设置,如别名、路径等。针对不同用户独立设置 + +- **系统级别环境变量**: + - 存储在系统范围的配置文件中,如 `/etc/environment`、`/etc/profile` 。/etc/profile.d目录 + - 为**所有用户和系统服务**提供全局的环境设置。java_home、python + +### 2. 环境变量的加载顺序和文件 + +- **系统启动加载**:/etc/environment ,一开源就加载,初始化 + +- **登录Shell加载顺序**: + - 首先加载 `/etc/profile`,然后根据用户登录方式加载 `~/.profile`(存在性依次加载)。 + - 非登录shell: su 切换用户 等 source + +- **交互式Shell加载顺序**: + - 加载 `~/.bashrc` 或类似文件,用于设置用户个性化的Shell环境。 + - 不同的shell加载不同的文件,bash才加载.bashrc,zsh加载.zshrc + - 交互式:提供命令行窗口,非交互式:直接写在脚本里 +- **总结来说** + - 配置文件的理论加载顺序通常是 `/etc/environment` > `/etc/profile` > `~/.profile` > `~/.bashrc`。【实验】 + +### 3. 设置环境变量的方法 + +​ 设置变量的位置:命令行(临时),脚本文件(永久) + +#### 3.1 临时设置环境变量:临时变量(局部),临时环境变量(全部) + +​ 可以使用 `export` 命令来临时设置一个环境变量,例如: + +```bash +export MY_VAR="value" # export 变量名=值 环境变量是全局的,整个环境有效 +MY_VAR="value" # 少了export 就是临时变量,不是全局的 +``` + +​ 这种设置只在当前Shell会话中有效,关闭Shell会话后会失效。 + + + +#### 永久设置环境变量: + +​ **用户级别的** : 编辑用户的 `~/.bashrc` 或 `~/.profile` 文件,并添加如下行: + +```bash +export MY_VAR="value" +``` + +​ 保存文件后,新的设置会在下次登录时生效。 + +​ **系统级别的:** 编辑 `/etc/environment` 或 /etc/profile文件,并添加类似以下行: + +```plaintext +MY_VAR="value" +``` + +这里不需要使用 `export` 命令。保存文件后,变量会在系统启动时生效。 + +#### 3.3 环境变量的设置和使用示例 + +3.1 设置路径变量(PATH) + +```bash +# 在 ~/.bashrc 中添加 +export PATH=$PATH:/path/to/your/scripts +``` + +3.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.3 设置代理服务器(HTTP_PROXY、HTTPS_PROXY) + +```bash +# 在 ~/.bashrc 中添加 +export HTTP_PROXY=http://proxy.example.com:8080 +export HTTPS_PROXY=http://proxy.example.com:8080 +``` + +3.4 配置编辑器(EDITOR) + +```bash +# 在 ~/.bashrc 中添加 +export EDITOR=/usr/bin/vim +``` + +3.5 设置语言和地区(LANG、LC_系列变量) + +```bash +# 在 ~/.bashrc 或 /etc/environment 中添加 +export LANG="en_US.UTF-8" +export LC_ALL="en_US.UTF-8" +``` + +3.6 自定义命令别名(alias) + +```bash +# 在 ~/.bashrc 中添加 +alias ll='ls -alF' +alias grep='grep --color=auto' +``` + +3.7 设置临时环境变量 + +```bash +# 临时设置变量 +export MY_VAR="value" +``` + +# 作业 + +### 练习题 1: 显示当前所有的环境变量 + +* 使用`printenv`或`env`命令来显示所有的环境变量。 + + +```bash +printenv +env +``` + +### 练习题 2: 显示`HOME`环境变量的值 + +* 使用`echo`命令和`$`符号来显示`HOME`环境变量的值。 + + +```bash +echo $HOME +``` + +### 练习题 3: 临时设置一个新的环境变量 + +* 设置一个名为`MY_AGE`的环境变量,并将其值设置为`18`。 + + +```bash +export MY_AGE=18 +``` + +### 练习题 4: 显示新设置的环境变量 + +* 使用`echo`命令来显示`MY_AGE`的值。 + + +```bash +echo $MY_VARIABLE +``` + +### 练习题 5: 在新的shell会话中检查环境变量 + +* 打开一个新的终端窗口或标签页,并尝试显示`MY_AGE`的值。你会看到什么?为什么? + +### 练习题 6: 修改`PATH`环境变量 + +* 将`你当前用户的家目录`添加到你的`PATH`环境变量的末尾位置 + + +```bash +PATH = $PATH:/home/hlt +``` + +将`/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 +vim ~/.bashrc +export MY_NAME=奥德彪 +``` + +如何让`MY_NAME`生效,并验证 + +```bash +source ~/.bashrc +echo $MY_NAME +``` + +### 练习题 9: 清理 + +* 清除你之前设置的`MY_AGE`和`PATH`的修改(如果你不想永久保留它们)。 + + +```bash +unset MY_NAME +export PATH=$(echo $PATH | sed 's/:\/tmp//') +``` + +### 练习题 10: 修改默认器 + +* 使用`EDITOR`变量,修改你默认的编辑器为nano。 + + +```bash +vim .bashrc +export EDITOR=nano +``` + +### 练习题 11: 修改语言 + +* 使用`LANG`变量,让你的文件支持中文和utf8编码来避免乱码。 + +```bash +export LANG="zh_CN.UTF-8" +``` + +- 使用`LANGUAGE`变量,让你的命令提示为中文 + +```bash +export LANGUAGE="zh_CN.UTF-8" +``` + diff --git "a/\351\273\204\346\265\201\346\266\233/20240620 \350\277\233\347\250\213\347\256\241\347\220\206.md" "b/\351\273\204\346\265\201\346\266\233/20240620 \350\277\233\347\250\213\347\256\241\347\220\206.md" new file mode 100644 index 0000000000000000000000000000000000000000..9643864bd20f6f16053506b6e23efae37d663e35 --- /dev/null +++ "b/\351\273\204\346\265\201\346\266\233/20240620 \350\277\233\347\250\213\347\256\241\347\220\206.md" @@ -0,0 +1,92 @@ +# 笔记 + +## 进程管理 + +### ps 显示进程 + +​ ps -aux:显示所有进程 + +​ ps aux | grep nginx 筛选显示nginx的进程 + +​ pstree 树的形式显示进程 + +### top(实时查看) + +### htop + +​ 需要下载 apt install htop + +可以搜索,过滤,杀死,排序,直观图像显示 + +## 查看进程 + +### pidof + +​ pidof 服务 (通过服务名查进程号) + +### pgrep + +​ pgret 服务 (通过服务名查进程号) + +​ pgret -u 用户 (通过用户名查进程号) + +​ pgret -u 用户 服务 (通过用户名和服务名查进程) + +## kill(需要管理员权限) + +### kill + +​ -9 强制关闭 + +​ -15 安全关闭 + +### killall + +​ killall -9 服务名 (结束对应服务名对应的所有进程号) + +### pkill + +​ 和killall一致 + +## fg,bg 切换前后台执行 + +#### jobs可以查看后台进程 + +### fg 前台 + +​ 先jobs查看有哪些后台进程在跑 (会得到编号) + +​ fg %编号 (切换到前台) + +​ ctrl + c 终止该前台的进程执行 + +### bg后台 + +​ 命令最后直接加& (进程放入后台) + +或者 + +​ 在前台时先暂停按ctrl + z (会得到编号) + +​ bg %编号 (把编号的进程放入后台) + +​ + +## 服务管理 + +#### systemctl start nginx (启动nginx服务) + +启动:start + +停止 stop + +重启 restart + +重加载配置 reload + +开机自启用 enable + + + + +