diff --git "a/23\345\276\220\350\225\276/20240614-\346\226\207\344\273\266\344\270\216\347\233\256\345\275\225\347\232\204\346\235\203\351\231\220\347\256\241\347\220\206.md" "b/23\345\276\220\350\225\276/20240614-\346\226\207\344\273\266\344\270\216\347\233\256\345\275\225\347\232\204\346\235\203\351\231\220\347\256\241\347\220\206.md" new file mode 100644 index 0000000000000000000000000000000000000000..ddc813fcdcf6e9c31fd82e00fb01523e8ca65b57 --- /dev/null +++ "b/23\345\276\220\350\225\276/20240614-\346\226\207\344\273\266\344\270\216\347\233\256\345\275\225\347\232\204\346\235\203\351\231\220\347\256\241\347\220\206.md" @@ -0,0 +1,263 @@ +1. 创建/guanli 目录,在/guanli下创建zonghe 和 jishu 两个目录(一条命令) + + ```bash + mkdir -p /guanli/zonghe &&mkdir /guanli/jishu + ``` + +2. 添加组帐号zonghe、caiwu、jishu,GID号分别设置为2001、2002、2003 + + ```bash + groupadd -g 2001 zonghe + groupadd -g 2002 caiwu + groupadd -g 2003 jishu + ``` + +3. 创建jerry、kylin、tsengia、obama用户,其中的kylin用户帐号在2020年12月30日后失效 + + ```bash + useradd jerry && useradd -e 2020-12-30 kylin && useradd tsengia && useradd obama + ``` + + + +4. 将jerry、kylin、tsengia、obama等用户添加到zonghe组内 + + ```bash + gpasswd -M jerry,kylin,tsengia,obama zonghe + ``` + + + +5. 创建handy、cucci用户,其中cucci帐号的登录Shell设置为“/sbin/nologin” + + ```bash + useradd handy && useradd cucci + usermod -s /sbin/nologin cucci + ``` + + + +6. 将handy、cucci等用户添加到jishu组内 + + ```bash + gpasswd -M handy,cucci jishu + ``` + + + +7. 将上述的所有用户均要求加入到guanli组内 + + ```bash + groupadd guanli + gpasswd -M jerry,kylin,tsengia,obama,handy,cucci guanli + ``` + + + +8. 将zonghe组内的obama用户删除 + + ```bash + gpasswd -d obama zonghe + Removing user obama from group zonghe + ``` + + + +9. 为jerry用户设置密码为“123456”(使用普通方法)为cucci用户设置密码为“redhat” + + ```bash + passwd jerry + passwd redhat + ``` + + + +10. 将jerry用户锁定,并查看锁定状态 + + ```bash + usermod -L jerry + passwd -S jerry + jerry L 06/14/2024 0 99999 7 -1 + ``` + + + +11. 打开两个xshell窗口,通过(who 或者 w)命令查看连接状态,并通过fuser杀掉其中一个 + + ```bash + sudo apt-get update + sudo apt-get install psmisc + who + fuser -k/dev/pts/1 + ``` + + + +12. 查看cucci用户,属于那些组,并查看其详细信息 + + ```bash + groups cucci + sudo apt-get install finger + finger cucci + + ``` + + + +13. 手工创建账号student(预留) + + ```bash + vi /etc/passwd + student:x:1014:1014::/home/student:/bin/bash + vi /etc/shadow + student::18107:0:99999:7::: + vi /etc/group + student:x:1014: + mkdir /home/student + cd /etc/skel/ + ls -a | cp .b* /home/student/ + ``` + + + +14. 设置权限及归属:/guanli目录属组设为guanli, /guanli/zonghe目录的属组设为zonghe /guanli/jishu目录的属组设为jishu,设置3个目录都是禁止其他用户访问的权限 + + ```bash + chown :guanli /guanli + chown :zonghe /guanli/zonghe + chown :jishu /guanli/jishu + chmod -R o-rwx /guanli/ + ``` + + + +15. 建立公共目录/ceshi允许技术组内的所有用户读取、写入、执行文件, 禁止其他用户读、写、执行 + + ```bash + mkdir /ceshi + chown .jishu /ceshi/ + chmod 770 /ceshi/ + ls -ld /ceshi + drwxrwx--- 2 root jishu 4096 Jun 14 19:12 /ceshi + ``` + + + +16. 清除jerry用户密码 + + ```bash + passwd -d jerry + passwd: password expiry information changed. + ``` + + + +17. 锁定cucci用户密码并查看状态 + + ```bash + passwd -l cucci + passwd: password expiry information changed. + passwd -S cucci + cucci L 06/14/2024 0 99999 7 -1 + ``` + + + +18. 修改obama用户的UID为8888 + + ```bash + id obama + uid=1021(obama) gid=1021(obama) groups=1021(obama),2004(guanli) + usermod -u 8888 obama + id obama + uid=8888(obama) gid=1021(obama) groups=1021(obama),2004(guanli) + ``` + + + +19. 通过passwd命令修改kylin用户的最长密码使用期限为60天 + + ```bash + passwd -x 60 kylin + passwd: password expiry information changed. + cat /etc/shadow |grep "kylin" + kylin:!:19888:0:60:7::18626: + ``` + + + +20. 通过id groups等命令查看用户handy信息 + + ```bash + id handy + uid=1022(handy) gid=1022(handy) groups=1022(handy),2003(jishu),2004(guanli) + groups handy + handy : handy jishu guanli + ``` + + + +- 用户管理 + - 添加账户 useradd -m -s /bin/bash db2 + - 删除账户 userdel -r db2 + - 修改账户 usermod [选项同添加账户] db2 + - 查看帐户 getent passwd db2 +- 用户组管理 + - 添加用户组 groupadd stu1 + - 删除用户组 groupdel stu1 + - 添加用户到用户组 usermod -aG stu1 db2 +- 密码管理 + - 设置密码 passwd +- sudo权限管理 + - usermod -aG sudo xxx + - 修改/etc/sudoers文件 +- 登录权限管理 +- 用户环境管理 + - 用户配置文件 : .bashrc + - 用户环境变量: $PATH、$HOME、$SHELL + +## 文件与目录的权限管理 + +- 文件类型 + + - -普通文件 + - d目录 + - l连接文件 + - b c s p 等其它文件 + +- 基本权限 + + - r 读 + - w 写 + - x 执行 + +- 权限表示 + + - 字符表示 + - 数字表示 + - 4 代表 r + - 2 代表 w + - 1 代表 x + - 权限修改 + - chmod 修改权限 + - chown 修改拥有者 + - chgrp 修改所属组 + - 权限的继承 + - 目录权限下文件和目录的影响 + - umask + - 特权权限 + - SUID + - SGID + - SBIT + - 隐藏权限 + - i + - 用在文件上,无法对该文件进行任何修改 + - 用在目录上,无法在里面创建新文件,但可以修改已有文件 + - a + - 除了可追加内容外,无法进行其它修改 + - 隐藏权限的操作 + - 修改隐藏权限 chattr + - chattr +i XXX + - chattr -i XXX + - 查看隐藏权限 + - lsattr \ No newline at end of file diff --git "a/23\345\276\220\350\225\276/20240615-\345\221\250\346\234\237\344\273\273\345\212\241\347\273\203\344\271\240.md" "b/23\345\276\220\350\225\276/20240615-\345\221\250\346\234\237\344\273\273\345\212\241\347\273\203\344\271\240.md" new file mode 100644 index 0000000000000000000000000000000000000000..d117b2fb1899663a3ea9a2e82416b469efd5233a --- /dev/null +++ "b/23\345\276\220\350\225\276/20240615-\345\221\250\346\234\237\344\273\273\345\212\241\347\273\203\344\271\240.md" @@ -0,0 +1,152 @@ +### 周期任务练习 + +执行在家目录touch a.txt + +1. 每天3:00执行一次 + + ```js + 0 3 * * * + ``` + + + +2. 每周六2:00执行 + + ``` + 0 2 * * 6 + ``` + + + +3. 每周六1:05执行 + + ``` + 5 1 * * 6 + ``` + + + +4. 每周六1:25执行 + + ``` + 25 1 * * 6 + ``` + + + +5. 每天8:40执行 + + ``` + 40 8 * * * + ``` + + + +6. 每天3:50执行 + + ``` + 50 3 * * * + ``` + + + +7. 每周一到周五的3:40执行 + + ``` + 40 3 * * 1-5 + ``` + + + +8. 每周一到周五的3:41开始,每10分钟执行一次 + + ``` + 41/10 3 * * 1-5 + ``` + + + +9. 每天的10:31开始,每2小时执行一次 + + ``` + 31 10/2 * * * + ``` + + + +10. 每周一到周三的9:30执行一次 + + ``` + 30 9 * * 1-3 + ``` + + + +11. 每周一到周五的8:00,每周一到周五的9:00执行一次 + + ``` + 0 8,9 * * 1-5 + ``` + + + +12. 每天的23:45分执行一次 + + ``` + 45 23 * * * + ``` + + + +13. 每周三的23:45分执行一次 + + ``` + 45 23 * * 3 + ``` + + + +14. 每周一到周五的9:25到11:35、13:00到15:00之间,每隔10分钟执行一次 + + ``` + 25-35/10 9-11 * * 1-5 + 0/10 13-15 * * 1-5 + ``` + + + +15. 每周一到周五的8:30、8:50、9:30、10:00、10:30、11:00、11:30、13:30、14:00、14:30、5:00分别执行一次 + + ``` + 30,50 8 * * 1-5 + 30/30 9,10,11,13,14 * * 1-5 + 0 5 * * 1-5 + ``` + + + +16. 每天16:00、10:00执行一次 + + ``` + 0 16,10 * * * + ``` + + + +17. 每天8:10、16:00、21:00分别执行一次 + + ``` + 10 8 * * * + 0 16,21 * * * + ``` + + + +18. 每天7:47、8:00分别执行一次 + + ``` + 47 7 * * * + 0 8 * * * + ``` + + \ No newline at end of file diff --git "a/23\345\276\220\350\225\276/20240618-\347\216\257\345\242\203\345\217\230\351\207\217.md" "b/23\345\276\220\350\225\276/20240618-\347\216\257\345\242\203\345\217\230\351\207\217.md" new file mode 100644 index 0000000000000000000000000000000000000000..8c1d9d304efe9738f228fcd2f208acfcb574a456 --- /dev/null +++ "b/23\345\276\220\350\225\276/20240618-\347\216\257\345\242\203\345\217\230\351\207\217.md" @@ -0,0 +1,189 @@ +# 环境变量 + +## 系统启用 + +1. /etc/environment:加载系统级的环境变量,不管是否登录 +2. /etc/profile:系统被登录就加载,任何人登录 +3. ~/.profile:具体哪个人登录后,加载自己目录下的文件 +4. 加载对应的shell配置文件:~/.bashrc + +## 环境变量的类型和作用 + +### 用户级别环境变量 + +- 存储在用户家目录的个人配置文件中 +- 用户定义用户个性化的shell设置 + +### 系统级别环境变量 + +- 存储在系统范围的配置文件中 +- 为所有用户和系统服务提供全局的环境设置 + +## 环境变量的加载顺序和文件 + +### 系统启动加载 + +/etc/environment + +### 登录shell加载顺序 + +- 首先加载/etc/profile,然后根据用户登录方式加载~/.profile(存在性依次加载) +- 非登录shell:su 切换用户等 source + +### 交互式shell加载顺序: + +- 加载~/.bashrc 或类似文件,用于设置用户个性化的shell环境 +- 不同的shell加载不同的文件,bash才加载.bashrc,zsh加载.zshrc +- 交互式:提供命令行窗口,非交互式:直接写在脚本里 + +### 总结来说 + +配置文件的理论加载顺序通常是:/etc/environment > /etc/profile > ~/.profile > ~/.bashrc + +## 设置环境变量的方法 + +设置变量的位置:命令行(临时),脚本文件(永久) + +### 1.临时设置环境变量:临时变量(局部),临时环境变量(全部) + +可以使用exprot命令来临时设置一个环境变量 + +```bash +exprot MY_VAR="value" #exprot 变量名=值 环境变量是全局的,整个环境有效 +MY_VAR="value" #少了exprot 就是临时变量,不是全局的 + +``` + +这种设置只在当前shell绘画中有效,关闭shell绘画后会失效 + +### 2.永久设置环境变量 + +**用户级别的 **:编辑用户的~/.bashrc 或 ~/.profile 文件,并添加如下行: + +```bash +exprot MY_VAR="value" +``` + +保存文件后,新的设置会在下次登录时生效 + +**系统级别的 **:编辑 /etc/environment 或 /etc/profile 文件,并添加类似以下行: + +```bash +MY_VAR="value" +``` + +这里不需要使用exprot命令。保存文件后,变量会在系统启动时生效 + +### 3.环境变量的设置和使用示例 + +**设置路径变量**(PATH) + +```bash +# 在~/.bashrc 中添加 +exprot PATH=$PATH:/path/to/your/scripts +``` + +**定义Java环境变量(JAVA_HOME) ** + +```bash +# 在~/.bashrc 或 /etc/environment 中添加 +export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 +export PATH=$JAVA_HOME/bin:$PATH +``` + +**设置代理服务器(HTTP_PROXY、HTTPS_PROXY)** + +```bash +# 在 ~/.bashrc 中添加 +export HTTP_PROXY=http://proxy.example.com:8080 +export HTTPS_PROXY=http://proxy.example.com:8080 +``` + + **配置编辑器(EDITOR)** + +```bash +# 在 ~/.bashrc 中添加 +export EDITOR=/usr/bin/vim +``` + +**设置语言和地区(LANG、LC_系列变量)** + +```bash +# 在 ~/.bashrc 或 /etc/environment 中添加 +export LANG=en_US.UTF-8 +export LC_ALL=en_US.UTF-8 +``` + +**自定义命令别名(alias)** + +```bash +# 在 ~/.bashrc 中添加 +alias ll='ls -alF' +alias grep='grep --color=auto' +``` + + **设置临时环境变量** + +```bash +# 临时设置变量 +export MY_VAR="value" +``` + +### 4. 常用环境变量 + +**系统级** + +* `PATH` 可执行文件的搜索路径 +* `LANG` 定义系统的语言环境和字符集, export LANG=zh_CN.utf8,编辑文件不乱码 +* `LANGUAGE` 用于设置消息语言的优先级 ,提示语言为中文 +* `EDITOR` 默认文本编辑器 editor + +**用户级** + +* **`HOME`** :当前用户的主目录。 +* **`USER`**:当前用户名。 +* **`UID`**:当前用户的用户ID。 +* **`SHELL`**:当前用户的默认Shell。 + +### 5. 临时变量与环境变量 + +定义一个变量时,在变量名前加了export关键字,就是环境变量,作用域是全局环境子子进程中也有效,否则就是临时变量,只在当前脚本文件或shell中有效。 + +命令行示例: + +```bash +MY_NAME="张三" # 临时变量(局部) +echo $MY_NAME +bash -c 'echo $MY_NAME' +# 什么结果?对比下面的效果 + +export MY_NAME="张三" # 临时变量(全局) +echo $MY_NAME +bash -c 'echo $MY_NAME' # 子进程 +# 看下效果 +``` + + + +脚本文件示例 : + +`test1.sh` + +```bash +#!/bin/bash +MY_NAME="张三" # 前面加上export再试一次 +echo "test:我的名字是:$MY_NAME" +./subscript.sh +``` + +`test2.sh`: + +```bash +#!/bin/bash +echo "test2:你的名字是: $MY_NAME" +``` + +**临时变量**:在脚本中定义但不导出的变量仅在脚本执行期间有效,不会影响其他 shell 会话或子进程。 + +**环境变量**:使用 `export` 导出的变量在当前 shell 会话和所有子进程中都有效。 + diff --git "a/23\345\276\220\350\225\276/20240619-\350\277\233\347\250\213\347\256\241\347\220\206.md" "b/23\345\276\220\350\225\276/20240619-\350\277\233\347\250\213\347\256\241\347\220\206.md" new file mode 100644 index 0000000000000000000000000000000000000000..acdfd9ca3dc4a9528e91edb321855338d42a302f --- /dev/null +++ "b/23\345\276\220\350\225\276/20240619-\350\277\233\347\250\213\347\256\241\347\220\206.md" @@ -0,0 +1,32 @@ +# 进程管理 + +```bash +1.ps - ef | grep - 列出需要进程 + ps -aux - 显示进程信息,如无终端的(x)和针对用户(u)的进程:如USER,PID,%CPU等 + ps -e --forest 以树形结构显示进程关系 +2.pstree +3.top:实时显示系统中各个进程的资源占用情况 +4.htop:比top更高级的进程查看器,提供颜色编码和更直观的界面 +5.pkill:根据进程名杀死进程 +6.pgrep:查看匹配条件的进程。例如,pgrep -f httpd可以查找命令行中包含httpd的进程 +7.jobs:显示当前shell会话中的作业状态 +8.bg:将一个暂停(stopped)的作业放在后台执行 +9.fg:将后台作业调至前台并继续执行 +10.nohup:在用户注销后继续运行命令 +``` + +```bash +服务管理 +1.systemctl + - 启动 systemctl start 服务名 + - 停止 systemctl stop 服务名 + - 重启 systemctl restart 服务名 + - 查看 systemctl status 服务名 + - 重新加载配置文件 systemctl reload 服务名 + +2.service + - 启动 service 服务名 start + - 停止 service 服务名 stop + - 重启 service 服务名 restart + - 查看 service 服务名 status +``` \ No newline at end of file