Skip to content

Instantly share code, notes, and snippets.

View ibreathebsb's full-sized avatar

Isaac Young ibreathebsb

View GitHub Profile

at

只在某个时间点只执行一次的任务:

at now + 1minutes

crontab

quota

磁盘配额工具,针对不同的用户,群组设置不同的配额,quota支队文件系统有效,可以按照inode数量或者总的block容量来限制,支持soft和hard两个配额,当用户的磁盘配额 超过soft容量时,系统给予警告,超出hard配额时,多余的无法写入

  1. 将文件系统挂载为支持quota: mount -o remount,usrquota,grpquota /mountpoint
  2. 初始化quota配置,quotacheck -ugv -f/mountpoint 其中u和v分别代表检查用户配额和群组配额
  3. 启用或者禁用quota quotaon -ug /mountpoint quotaoff -ug /file-system
  4. 配置用户或者群组的限额edquota -u user edquota -g group 也可以复制某个用户/群组的配置edquota -p source -u target 或者使用直接配置命令setquota user/group blocksoft blockhard inodesoft inodehard /mountpoint
  1. su - user 只能切换到能够登录的用户,并且需要输入user的密码
  2. su 直接使用su,切换到root但是$PATH等环境变量不会改变,因此不推荐此方式
  3. sudo -u user command 输入当前用户自己的密码,并以user的身份执行命令

sudo

  1. 配置文件 /etc/sudoers,文件格式:用户 登录主机(可切换的用户) 可使用的绝对路径命令

shell脚本基础

test

判断常用命令,也可用[空格 条件 空格]代替

文件相关-f -e -d -l

权限相关 -r -w -x

awk

行内文本编辑,行内默认以空格或者Tab分割

awk 'condition1 {command1} condition2 {command2} ...'

# awk命令中的变量使用时不需要加$符号
# NF 当前行的列数

sed

stream editor

regex

grep -n 'o\{2\}' regular_express.txt: { }需要转义,因为在bash中有特殊含义

pipe |

管线对stderr无效,管线后的命令能够读取stdout

cut

cut用于处理单行数据,如果输入有多行会对每行进行同样的处理,适用于格式比较工整的输入

cut -d'divider' -fbc LIST: d: divider, c: character, b: byte, f: filed

输入输出重定向

  1. 0 1 2 分别表示标准输入(键盘) 标准输出(屏幕) 标准错误输出
  2. > file 将原本输出到标准输出的内容以覆盖的方式写入到file中,>> file追加的方式写入到file中
  3. 2> file 与上述类似,不过只会处理错误信息
  4. 将正常信息和错误信息分开输出ls -al > ok 2> bad
  5. 将正常信息和错误信息合并到一个文件输出ls -al > ok 2>&1
  6. 忽略所有信息,黑洞/dev/null, ls -al > /dev/null >2&1
  7. 标准输入 用文件内容来代替键盘输入 cat > test < ./file
  8. 自定义输入结束 cat > test << 'STOP', 当输入STOP时会结束输入

命令搜索顺序

  1. 对与使用绝对路径或相对路径下达的命令例如/bin/ls ./test 直接在路径中查找
  2. 在alias中查找
  3. 在shell的builtin指令中查找
  4. $PATH中查找第一个名称匹配额命令

bash环境变量初始化

login shellnon-login shell : login shell值的是通过账号密码输入登录后的shell,non-login shell指的是没有经过上述登录流程的shell,例如桌面环境下登录后,打开terminal,或者在login shellbash创建的新shell