Linux
DevOps Linux System 01
- Azure 中的 resource group 可以理解成 GCP 中的 project: a container for a project related on project reources. (based on business logic)
- RedHat vs CentOS vs Debian vs Ubuntu
- Ubuntu: 带界面
- Debian: 比 Ubuntu 稳定,小 size,就系统本身,固若金汤
- RedHat:黄金企业版,贼贵
- CentOS:RedHat 对应的开源版本
- apt 相当于一个 index,连接不同的版本 repo,apt update 能更新目录索引
- ~/.jenkins 中可单独 archive 用户文件,JENKINS_HOME → default:/var/lib/jenkins
- keep the same number of CPUs ⇒ of executors (total number of concurrent job)
- SCM: source code mangement → 从 version control 中去拉取
DevOps Linux file struct 02
- /bin, /sbin, /usr/bin, /usr/sbin: 这是系统预设的执行文件的放置目录,比如 ls 就是在 /bin/ls 目录下的。
- 值得提出的是 /bin、/usr/bin 是给系统用户使用的指令(除 root 外的通用用户),而/sbin, /usr/sbin 则是给 root 使用的指令。
- /var: 系统上跑了很多程序,那么每个程序都会有相应的日志产生,而这些日志就被记录到这个目录下,具体在 /var/log 目录下,另外 mail 的预设放置也是在这里。
- /var 包含系统一般运行时要改变的数据。通常这些数据所在的目录的大小是要经常变化或扩充的。原来 /var 目录中有些内容是在 /usr 中的,但为了保持 /usr 目录的相对稳定,就把那些需要经常改变的目录放到 /var 中了。每个系统是特定的,即不通过网络与其他计算机共享。
- /etc 目录包含各种系统配置文件,许多网络配置文件也在 /etc 中。
DevOps Linux sudo vs su 03
- su 和 su - 的区别:su 只是切换了 root 身份,但 Shell 环境仍然是普通用户的 Shell;而后者连用户和 Shell 环境一起切换成 root 身份了。只有切换了 Shell 环境才不会出现 PATH 环境变量错误。su 切换成 root 用户以后,pwd 一下,发现工作目录仍然是普通用户的工作目录;而用 su -命令切换以后,工作目录变成 root 的工作目录了
- sudo vs su: sudo == super user do; su = swith user
- su 默认切换到 root 用户
- su - -c 临时借用 root 用户的权限,执行完后返回当前用户
- sudo su - == sudo -i 切换到 root 用户(以 login shell 的方式切换到 root 用户),其中,sudo su - 需要提供当前用户的密码,su - 需要提供 root 用户的密码
- 一个用户能否使用 sudo 命令,取决于 root 用户在/etc/sudoers 文件中是否给了授权,只有 root 用户有权使用 visudo 命令。
- [root@localhost ~] 代表着:
- 用户名:root
- 主机名:localhost
- 当前路径:~当前用户的 home 目录
- 权限标志位:#代表 root,$代表普通用户
- [root@localhost ~] 中,~ 和 /的区别
- 第一个是 root 的主目录,相当于 Windows 下的 C:\Documents and Settings\Administrator 这个目录一样,第二个是 Linux 的根分区,相当于 c:/。
- 在根目录下,有/root 目录和/home 目录,像 root 用户的主目录是/root,其它用户的主目录一般是/home/username
DevOps Linux Cron Job
-
set -x 开启 +x 关闭: 用于输出详细日志,是 Shell 脚本中使用 echo 命令输出的替代方案。
-
echo $? : check 上次的指令是否成功。成功返回 0,否则返回 1
-
查找文件及内容
- 'grep "被查找的字符串" 文件名' 从文件内容查找匹配指定字符串的行
- 'grep –e "正则表达式" 文件名' 文件内容查找与正则表达式匹配的行
- 'grep –i "被查找的字符串" 文件名` 不区分大小写
- 'find / -name "*.log" | xargs grep "ERROR"' 从根目录开始查找所有扩展名为 .log 的文本文件,并找出包含 "ERROR" 的行
-
管道
- | : 当一个命令无法完成时,多个管道命令结合
- | xargs:当管道后面接的是文件名时
-
定时任务
- crontab -e 设置定时任务
- crontab -l 查看定时任务
-
拷贝文件从本机到 remote server(安全状态下)
-
scp -i ~/.ssh/key.pem <从文件 newfile> ec2XX@<public IP>:<route path>
eg. scp -i ~/.ssh/my-key.pem newfile ec2@53.33.33.33:/home/ec2-user/newfile 从远程拷贝文件到本机,反之亦然。可用FileZilla 传输
-
-
设置文件所有者 sudo chown <username>:<group username> <fileName>
-
查阅正在改变的日志文件 tail -f filename (-f 循环读取)
-
PID:process identification 进程标识号,在操作系统中创建时自动分配给每个进程的唯一标识号
-
应用的可执行文件:把执行文件启动在操作系统中形成一个应用的副本,这个副本就是进程,即进程是应用的执行副本
-
较好的查看文件内容命令 less (觉得没啥用 😂)
#澳洲 IT #DevOps #澳洲求职 #澳洲找工作 #程序员 #转码
DevOps Regrex 备忘录
正则表达就是学了就忘系列,我是记不住 =。=
- ^: 从某个 letter 开始
- $: 以 XXX 结尾
- *:≥ 0
- +:≥1
- ?:[0, 1]
- x{n}:x 出现 n 次
- x{n,}:x 出现的次数 ≥n
- x{n, m}:x 出现的次数 ≥n, ≤m
- ():看作一个整体
- []:or 集,出现其中一个即可
- \d:单数字
- \w:单 character,eg letter, numbers, underscore
- \s:单空格,tab 和 line break
- \1: eg /(x)(y)\1/ ⇒ /(x)(y)(x)/ 反向引用括号里 pattern 的内容,按照顺序
\D, \W, \S 为非小写的集合
- Flags 在/patterns/的结尾
- g: 全局搜索,否则只返回 first match
- m: 多行匹配
- i:regular expression case insensitive
DevOps Mac && Linux 环境变量 | Day
-
sh 一般指的是 linux 的,但在 Mac 上的 sh 指令指的不是这个(William 老师认为这个的兼容性更好)
-
bash 是 sh 的扩展,mac 中的 sh 和 bash 指的都是这个
-
环境配置
- /etc/profile 第一个被加载,对所有用户起作用,权重最低(不建议修改此文件)
- /etc/paths 全局环境变量配置文件
- ~/.bash_profile → ~/.bash_login → ~/.profile → ~/.bashrc 读完系统文件后会读取这个文件,如果找到 bash_profile,就不会找后面的文件,linux 的顺序可能不同
- ~/.zshrc 这个是装了 oh-my-zsh 后的,系统从 zsh 启动,读取~/.zshrc,不会读取~/.bash_profile 文件了,可在文件最后添加 source ~/.bash_profile 来额外读取一次 bash 的配置
-
source ~/.bash_profile 重新激活一次配置文件环境变量
-
export ZSH=$HOME/.on-my-zsh 导出环境变量,可通过 echo $XXX 查看 export 出来的信息
-
PATH=$PATH:HOME/bin 这种冒号的是在原来的 PATH 上额外添加,冒号允许多个 PATH 路径,在执行的时候去各个文件夹去找
-
如果不添加在配置文件中,直接在命令行中输入 export XXX,则仅在当前用户执行,重启后消失(用户级全局变量)
-
alias ll = ‘ls -lt’ 命名快捷键 (可以打 alias 直接查看其同存储的 alias)
-
env 直接查看所有环境变量
-
echo $PATH 直接查看某个环境变量
-
Linux 链接命令
- & 任务在后台执行
- && 前一条成功后,才执行下一条命令
- | 上一条命令的输出作为下一条命令的输入
- || 上一条命令执行失败后,才执行下一条命令参数
-
Linux io 三剑客:stdin, stdout, stderr 等价于 python 的 input, print, (没有对应)
-
去两边字符 sed -e 's/[[:space:]]$//' | sed -e 's/^[[:space:]]//'