From d6c51754e2cacf25a6b19a192d3f8767b17e255e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E6=B3=B0=E9=93=AD?= <1843532044@qq.com> Date: Wed, 19 Jun 2024 13:36:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=9C=E4=B8=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...n \344\270\203\346\255\245\351\252\244.md" | 83 ++++++++++++ ...linux crontab\345\221\275\344\273\244.md" | 122 ++++++++++++++++++ ...242\203\345\217\230\351\207\217 Linux.md" | 99 ++++++++++++++ ...67\345\222\214\346\235\203\351\231\220.md" | 83 ++++++++++++ ...21\345\222\214\347\256\241\351\201\223.md" | 107 +++++++++++++++ 5 files changed, 494 insertions(+) create mode 100644 "\347\254\224\350\256\260/\345\210\232\345\256\211\350\243\205\345\256\214 Debian \344\270\203\346\255\245\351\252\244.md" create mode 100644 "\347\254\224\350\256\260/\345\221\250\346\234\237\345\222\214\344\273\273\345\212\241\347\256\241\347\220\206 linux crontab\345\221\275\344\273\244.md" create mode 100644 "\347\254\224\350\256\260/\347\216\257\345\242\203\345\217\230\351\207\217 Linux.md" create mode 100644 "\347\254\224\350\256\260/\347\224\250\346\210\267\345\222\214\346\235\203\351\231\220.md" create mode 100644 "\347\254\224\350\256\260/\351\207\215\345\256\232\345\220\221\345\222\214\347\256\241\351\201\223.md" diff --git "a/\347\254\224\350\256\260/\345\210\232\345\256\211\350\243\205\345\256\214 Debian \344\270\203\346\255\245\351\252\244.md" "b/\347\254\224\350\256\260/\345\210\232\345\256\211\350\243\205\345\256\214 Debian \344\270\203\346\255\245\351\252\244.md" new file mode 100644 index 0000000..0fdc939 --- /dev/null +++ "b/\347\254\224\350\256\260/\345\210\232\345\256\211\350\243\205\345\256\214 Debian \344\270\203\346\255\245\351\252\244.md" @@ -0,0 +1,83 @@ +## 刚安装完 Debian 七步骤 + +```bush +1.设置国内软件源镜像:/etc//apt/sources.list +2.更新软件包列表:apt update +3.更新系统:apt upgrade -y +4.安装vim:apt install vim -y +5.编辑网卡配置,设置静态IP: +vim /etc/network/interfaces + +重新启动网络服务: +sudo systemctl restart networking +常用命令; + +1.time(用于测量命令的执行时间) +- real:总的时间(墙上时钟时间)。 +- user:用户态 CPU 时间。 +- sys:内核态 CPU 时间。 + +2.date(显示或设置系统日期和时间) +- %Y:四位数的年份。 +- %m:两位数的月份。 +- %:两位数的日期。 + +3.timedatectl(查看和设置系统时间和日期,时区和 NTP(网络时间协议)设置) +- NTP:网络时间协议,用于同步时间。 +- RTC:实时时钟。 + +4.reboot(重新启动系统) +- systemd:系统和服务管理器。 + +5.poweroff(关闭系统电源) +- halt:停止系统所有的 CPU 功能。 + +6.wget(从网络上下载文件) +- URL:统一资源定位符。 +- HTTP/HTTPS:超文本传输协议。 + +7.curl(从网络上获取或发送数据) +- URL:统一资源定位符。 +- GET/POST:HTTP 请求方法。 + +8.ps(查看当前运行的进程) +- PID:进程标识符。 +- TTY:终端类型。 + +9.kill(向进程发送信号(通常用于终止进程)) +- SIGTERM:请求中止进程。 +- SIGKILL:强制终止进程。 + +10.ip(显示和操作网络接口和路由) +- address:IP 地址。 +- route:路由信息。 + +11.ss(显示套接字统计信息。旧版是netstat) +- TCP:传输控制协议。 +- UDP:用户数据报协议。 + +12.uname(显示系统信息) +- kernel:操作系统内核。 +- OS:操作系统。 + +13.uptime(显示系统运行时间和负载) +- load average:系统平均负载 + +14.who(显示当前登录用户信息) +- login:用户登录信息。 +- TTY:终端类型。 + +15.last(显示系统上最近的登录信息) +- wtmp:记录登录和注销事件的文件。 + +16.ping(测试网络连通性) +- ICMP:互联网控制消息协议。 +- echo request:回显请求。 + +17.traceroute(显示到达网络主机的路径) +- hop:从一个网络节点到另一个的跳转。 +- TTL:生存时间。 + +18.history(显示命令历史记录) +- bash history:记录用户输入的命令历史。 +``` \ No newline at end of file diff --git "a/\347\254\224\350\256\260/\345\221\250\346\234\237\345\222\214\344\273\273\345\212\241\347\256\241\347\220\206 linux crontab\345\221\275\344\273\244.md" "b/\347\254\224\350\256\260/\345\221\250\346\234\237\345\222\214\344\273\273\345\212\241\347\256\241\347\220\206 linux crontab\345\221\275\344\273\244.md" new file mode 100644 index 0000000..f866ea2 --- /dev/null +++ "b/\347\254\224\350\256\260/\345\221\250\346\234\237\345\222\214\344\273\273\345\212\241\347\256\241\347\220\206 linux crontab\345\221\275\344\273\244.md" @@ -0,0 +1,122 @@ +## 周期和任务管理 linux crontab命令 + +```bash +1.概念:提供了一种可以重复的、指定重复周期的一种机制 + 一种执行机制 +(1).定期备份数据 +(2).系统日志管理 +(3).定时重启或服务 +(4).清理临时文件 + +2.命令时间格式 +* * * * * command +分 小时 日 月 周 命令 + +(1).分钟:表示分钟,可以是从0-59之间的任何整数 +(2).小时:表示小时,可以是从0-23之间的任何整数 +(3).日:表示日期,可以是从1-31之间的任何整数 +(4).月:表示月份,可以是从1-12之间的任何整数 +(5).周:表示星期几,可以是从0-7之间的任何整数 + +3.特殊字符: +(1)星号*:代表是所有可能的值 +(2)逗号,:可以用逗号隔开的值指定一个列表范围 +(3)中杠-:可以用整数之间的中杠表示一个整数范围 +(4)正斜线/:例如:0-23/2表示每两个小时执行一次 + 例如:*/10,如果在分钟字段,表示每十分钟执行一次 +(5)问号?:表示任意值 + + +3.分类 + (1)系统级 + /etc/cron.hourly + /etc/cron.weekly + /etc/cron.daily + /etc/cron.monthly + /etc/cron.yearly + + (2).用户级 + /var/spool/cron/crontabs/root root用户的周期任务 +1.配置周期任务 +crontab:提交和管理用户的需要周期性执行的任务 + +2.语法 +crontab [选项] [参数] + +3.选项 + -e:编辑该用户的计时器设置 + -l:列出该用户的计时器设置 + -r:删除该用户的计时器设置 + -u<用户名称>:指定要设定计时器的用户名称 + +4.用户任务调度 +以下是使用者权限文件 + /etc/cron.deny:该文件所列用户不允许使用crontab命令 + /etc/cron.allow:该文件所列用户允许使用crontab命令 + /etc/spool/cron/:所有用户crontab文件存放的目录,以用户名命名 +一.crond服务 + +1.启动服务 +/sbin/service crond start + +2.关闭服务 +/sbin/service crond stop + +3.重启服务 +/sbin/service crond restart + +4.重新在载入配置 +/sbin/service crond reload + +5.查看crontab服务状态 +service crond status + +6.手动启动crontab服务 +service crond start +``` + +- 查看当前用户的crontab文件:crontab -l +- 编辑当前用户的crontab文件:crontab -e +- 删除当前用户的crontab文件:crontab -r +- 列出某个用户的crontab文件(需要有相应的权限): crontab -u username -l +- 编辑某个用户的crontab文件(需要有相应的权限): crontab -u username -e + +f1 f2 f3 f4 f5 program + +- 其中f1是表示分钟,f2表示小时,f3表示一个月份中的第几日,f4表示月份,f5表示一个星期中的第几天。program表示要执行的程序 + +```bash +时间设置 含义 +* * * * * 每分钟执行一次 +0 * * * * 每小时的第0分钟执行一次 +0 0 * * * 每天的午夜(0点)执行一次 +0 0 * * 0 每周日的午夜(0点)执行一次 +0 0 1 * * 每个月的第一天午夜(0点)执行一次 +0 0 L * * 每个月的最后一天午夜(0点)执行一次 +0 0 1 1 * 每年的第一天午夜(0点)执行一次 +0 0 * * 3 每周三的午夜(0点)执行一次 +0 0 1,15 * * 每个月的第1和第15天午夜(0点)执行一次 +0 0 * * FRI 每周五的午夜(0点)执行一次 +0 0 * * 5 每周五的午夜(0点)执行一次 +0 8-17 * * * 每天的上午8点到下午5点每小时执行一次 +0 12 * * MON 每周一的中午(12点)执行一次 +0 0 15 * * 每个月的第15天午夜(0点)执行一次 +0 0 * * 3 每周三的午夜(0点)执行一次 +0 0 * * 1-5 每个工作日的午夜(0点)执行一次 +0 0 1 * FRI 每个月的第一个星期五午夜(0点)执行一次 +0 0 15 1 * 每个月的1月15日午夜(0点)执行一次 +0 0 * * 7 每周日的午夜(0点)执行一次 +0 0 * * 5 每周五的午夜(0点)执行一次 +实例 +每一分钟执行一次 /bin/ls: +* * * * * /bin/ls + +在 12 月内, 每天的早上 6 点到 12 点,每隔 3 个小时 0 分钟执行一次 /usr/bin/backup: +0 6-12/3 * 12 * /usr/bin/backup + +周一到周五每天下午 5:00 寄一封信给 alex@domain.name: +0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata + +每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha": +20 0-23/2 * * * echo "haha" +``` \ No newline at end of file diff --git "a/\347\254\224\350\256\260/\347\216\257\345\242\203\345\217\230\351\207\217 Linux.md" "b/\347\254\224\350\256\260/\347\216\257\345\242\203\345\217\230\351\207\217 Linux.md" new file mode 100644 index 0000000..1acc4dc --- /dev/null +++ "b/\347\254\224\350\256\260/\347\216\257\345\242\203\345\217\230\351\207\217 Linux.md" @@ -0,0 +1,99 @@ +## 环境变量 Linux + +```bush +1.环境变量的类型和作用 + 用户级别环境变量 + 存储在用户家目录的个人配置文件中,例如 ~/.bashrc ~/.profile + 用于定义用户个性化的Shell设置,如别名,路径等 + 系统级别环境变量 + 存储在系统范围的配置文件中,如/etc/environment /etc/profile + 为所有用户和系统服务提供全局的环境设置 java_home + +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 命令来临时设置一个环境变量,例如: + export MY_VAR="value" # export 变量名=值 环境变量是全局的,整个环境有效 + MY_VAR="value" # 少了export就是临时变量,不是全局的 + 这种设置只在当前Shell会话中有效,关闭Shell会话后会失效 + + 3.2 永久设置环境变量 + 用户级别的: 编辑用户的~/.bashrc 或~/.profile文件,并添加如下行: + export MY_VAR="value" + 保存文件后,新的设置会在下次登录时生效 + 系统级别的:编辑/etc/environment 或 /etc/profile文件,并添加行: + MY_VAR="value" + 这里不需要使用export命令,保存文件后,变量会在系统启动时生效 + + 3.3环境变量的设置和使用示例 + a.设置路径变量(PATH) + # 在 ~/.bashrc 中添加 + export PATH=$PATH:/path/to/your/scripts + b.定义Java环境变量(JAVA_HOME) + # 在 ~/.bashrc 或 /etc/environment 中添加 + export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 + export PATH=$JAVA_HOME/bin:$PATH + c.设置代理服务器(HTTP_PROXY、HTTPS_PROXY) + # 在 ~/.bashrc 中添加 + export HTTP_PROXY=http://proxy.example.com:8080 + export HTTPS_PROXY=http://proxy.example.com:8080 + d.配置编辑器(EDITOR) + # 在 ~/.bashrc 中添加 + export EDITOR=/usr/bin/vim + e.设置语言和地区(LANG、LC_系列变量) + # 在 ~/.bashrc 或 /etc/environment 中添加 + export LANG=en_US.UTF-8 + export LC_ALL=en_US.UTF-8 + f.自定义命令别名(alias) + # 在 ~/.bashrc 中添加 + alias ll='ls -alF' + alias grep='grep --color=auto' + g.设置临时环境变量 + # 临时设置变量 + export MY_VAR="value" +``` + +```bush +.按生命周期分: + (1).永久环境变量,写在指定类型的配置文件,永不失效 ~/.bashrc/etc/profile.d/xxx.sh + (2).临时环境变量,临时使用export命令设置的环境变量,退出终端即失效 + +2.按作用域分 + (1).系统级环境变量,对所有用户生效 /etc/profile.d/xxx.sh + (2).用户级环境变量,只对当前用户生效 ~/.bashrc +3.常用系统级环境变量 + **系统级** +(1).PATH 可执行文件的搜索路径 +(2).LANG 定义系统的语言环境和字符集, export LANG=zh_CN.utf8,编辑文件不乱码 +(3).LANGUAGE 用于设置消息语言的优先级 ,提示语言为中文 +(4).EDITOR 默认文本编辑器 editor + +**用户级** +(1).HOME`:当前用户的主目录。 +(2).USER:当前用户名。 +(3).UID:当前用户的用户ID。 +(4).SHELL:当前用户的默认Shell。 +4.系统启用 + (1)./etc/environment 加载系统级的环境变量,不管有无登录 + (2)./etc/profile 系统被登录,就加载,任何人登录 + (3).~/.profile 具体哪个人登录后,加载自己目录下的文件 + (4).~/.bashrc 加载对就的shell的配置文件,类似.zshrc .xshrc +5.一个命令被执行经过几步 + (1).先判断是不是绝对路径:是就执行,不是就下一步 + (2).判断是不是别名,是别名就执行别名对应的命令,不是就下一步 + (3).从环境变量PATH值对应的路径中找,有没有这个命令,找到了就从那个路径去执行,找不到就下一步 + (4).报错了,找不到该命令 +``` \ No newline at end of file diff --git "a/\347\254\224\350\256\260/\347\224\250\346\210\267\345\222\214\346\235\203\351\231\220.md" "b/\347\254\224\350\256\260/\347\224\250\346\210\267\345\222\214\346\235\203\351\231\220.md" new file mode 100644 index 0000000..6c9d336 --- /dev/null +++ "b/\347\254\224\350\256\260/\347\224\250\346\210\267\345\222\214\346\235\203\351\231\220.md" @@ -0,0 +1,83 @@ +## 用户和权限 + + +一、用户与用户组 + +``` +1.用户管理 + - 添加用户 + (1).useradd 原生底层命令 + (2).adduser 加强版命令 + + - 删除用户 + (1).userdel -r 删除用户和家目录和邮件目录 + + - 修改用户 + (1).usermod + (2).usermod -G xxx 将xxx用户修改为.... + (3).usermod -aG xxx 给xxx用户追加一个附加组 + + - 查看用户信息 + (1).id 用户名 + (2).passwd + + - passwd+用户名:给这个用户名设置密码 + + +2.用户组管理 + - 添加用户组 + (1).groupadd + + - 删除用户组 + (1).groupdel + + - 修改用户组 + (1).groupmod +``` + +二、文件与目录和权限 + +```bash +1.基本权限 + (1).读:read,简写r:对于文件,是可以读取文件内容 + 对于目录,是可以浏览目录信息 + + (2).写:write,简写w:对于文件,是可以修改文件的内容 + 对于目录,可以在里面创建,修改,删除文件或目录 + + (3).执行:execute,简写x.对于文件,执行该文件,对于 + 目录,是可以进入该目录 + +2.权限的表达方式 + (1).字符:r w x + + (2).数字:4 读 r + 2 写 w + 1 执行 x + +3.权限管理的命令 + (1).修改权限 + - chmod + 数字权限表示 + 文件名 + - 例:chmod 777 1.txt + + - chmod + 字符权限表示 + 文件名 + - 例:chmod u=rx,g=wx 1.txt + + (2). + - u:拥有者 + - g:拥有者所在的组 + - o:除以上两者外的其他人 + - a:所有人 + - +:不改变原有权限基础上添加新权限 + - —:不改变原有权限基础上删除某权限 + - =:覆盖所有旧权限 + +4.修改拥有者 + (1).chown + +5.修改拥有者的组 + (1).chgrp + +6.通用的一个常用的选项 -R 递归设置权限 + +``` \ No newline at end of file diff --git "a/\347\254\224\350\256\260/\351\207\215\345\256\232\345\220\221\345\222\214\347\256\241\351\201\223.md" "b/\347\254\224\350\256\260/\351\207\215\345\256\232\345\220\221\345\222\214\347\256\241\351\201\223.md" new file mode 100644 index 0000000..8a18fcd --- /dev/null +++ "b/\347\254\224\350\256\260/\351\207\215\345\256\232\345\220\221\345\222\214\347\256\241\351\201\223.md" @@ -0,0 +1,107 @@ +## 重定向和管道 + +```bush +常用的文件描述符包括: + 0:标准输入:键盘输入 + 1:标准输出:直接显示在屏幕,不包含错误信息 + 2:标准错误:只包含错误信息 + +输出重定向 + 1.覆盖输出重定向 > + 将命令的标准输出重定向到一个文件,如果文件已经存在,则覆盖它 + ls > 1.txt + 这个命令将ls命令的输出保存到1.txt文件中,如果文件已存在,则会被覆盖 + + 2.追加输出重定向 >> + 将命令的标准输出追加到一个文件的末尾,如果文件不存在,则创建它 + echo "Hello" >> 2.txt + 这个命令会将"Hello"追加到2.txt文件中 + + 3.注意: + 标准输出不含错误信息 + +输入重定向 + 1.输入重定向 < + 将文件的内容作为命令的输入 + #原本的内容 + orange + banana + apple + 命令: sort < 3.txt + #使用命令后的内容 + apple + banana + orange + 将3.txt文件的内容作为‘sort’命令的输入进行排序 + + +错误重定向 + 1.错误输出重定向 2> + 将命令的错误输出重定向到一个文件 + reboot 2> 4.txt + 这个命令会将错误的信息保存到4.txt文件中 + + 2.错误输出追加重定向 2>> + 将命令的错误输出追加到一个文件 + reboot 2>> 3.txt + 这个命令会将reboot的错误信息追加到3.txt文件中 + + 3.同时重定向标准输出和标准错误输出 + 使用 &> 符号将标准输出和错误输出同时重定向到同一个文件 + command &> 5.txt #正确和错误原版混搭,原封不动 + command > 1.txt 2>&1 #正确和错误原版混搭,原封不动 + command > 1.txt 2>> 1.txt #先正确后错误 + command 2> 1.txt >> 1.txt #先错误后正确 + + +管道符 | + 1.将命令的输出传递给另一个命令 + ls -l | grep "txt" + 这个命令会将ls -l 的输出传递给grep 'txt',只显示包含“txt”的行 + + 2.多命令链式操作 + ps aux | grep "sshd" | awk '{print $2}' + 这个命令链会列出所以进程(ps aux),然后过滤包含"sshd"的行(grep 'sshd'),最后提取进程ID(awk '{print $2}') +``` + +```bush +重定向: +>(覆盖重定向):将输出重定向到文件(覆盖) +>>(输出追加重定向):将标准输出追加到文件末尾 +<(输入重定向):将文件内容作为标准输入 +2>:将错误输出重定向到文件 +2>>:将错误输出追加到文件 +&>:将标准和错误都输出到重定向 +&>>:将标准和错误输出追加到重定向 +|:将左边的输出右边的输入 +<>:先输入,后输出 +2> /dev/null:将错误信息丢掉不显示 +0:标准输入(stdin):键盘输入 +1:标准输出(stdout):直接显示在屏幕,不包含错误信息 +2:标准错误(stderr):只包含错误信息 +1.<< 是什么功能?here document + 答:<<(双小于号,后跟分界线) + 它允许直接在命令行或脚本中定义一大段文本 + 然后将其作为命令的标准输入。分界线可以是 + 任意不包含空格的字符串,通常是一个单词或者 + 一对引号 + +2.()把命令包括起来,是干什么功能? + 答:命令组。 + 括号中的命令将会新开一个子shell顺序执行, + 所以括号中的变量不能够被脚本余下的部分使用 + 括号中多个命令之间用分号隔开,最后一个命令 + 可以没有分号,各命令和括号之间不必有空格 +1.tee是一个在Unix和类Unix操作系统上非常有用的命令行实用程序。 + 它的作用是从标准输入中读取数据,并同时将数据输出到标准输出和 + 一个或多个文件中。 + +2.选项: + -a:追加写入文件而不是覆盖 + -i:忽略中断信号 + --help:显示帮助信息和选项列表 + --version:显示版本信息 + +3.tee命令是一个灵活而强大的工具,可以用于在命令行中处理数据流 + 同时向多个文件写入数据 +``` \ No newline at end of file -- Gitee