Bash检查当前用户是不是root
发表于|更新于|基础运维
1 | if [ $(id -u) != "0" ]; then |
文章作者: 张理坤
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 杂烩饭!
相关推荐
2026-07-14
编写安全健壮的shell脚本
编写 shell 脚本容易出现的问题:比如变量为空的时候,管道报错等,容易引起一系列问题甚至灾难性的结果。可以借助工具https://www.shellcheck.net/来检查脚本里面可以改进的地方。 脚本里使用 set建议使用 set -oset -o 可以查看 shell 的选项开关,比如常用的 pipefail pipefail 是指在一个管道命令中,任意一个命令执行失败就认为命令报错(但是可以继续执行,想让它报错退出需要再加上 set -e) 可以在 shell 脚本开头加上 set -o pipefail,我们来看一个例子: set -eset -e 是指任意一条命令返回值不是 0,脚本就退出不继续执行了。 如果有些程序想要人为的忽略报错,可以在命令开始前加上 set +e,命令结束的时候再 set -e,如: set -u将未设置的参数或者变量视为错误并退出脚本。 这个时候只会执行 echo 111,因为 ${123}不存在,脚本就报错退出了。 set -x调试模式,会把每一个 shell 命令执行的结果都打印出来,效果等同于 bash -x t...
2025-01-07
shell脚本条件判断与比较运算
if 的基本语法: 文件/目录 判断常用的 运算符 作用 -d 测试文件是否为目录 -e 测试文件是否存在 -f 判断是否为一般文件 -r 测试当前用户是否有权限读取 -w 测试当前用户是否有权限写入 -x 测试当前用户是否有权限执行 -s 文件长度不为零 选项 作用 [ -b FILE ] 如果 FILE 存在且是一个块特殊文件则为真。 [ -c FILE ] 如果 FILE 存在且是一个字特殊文件则为真。 [ -d DIR ] 如果 FILE 存在且是一个目录则为真。 [ -e FILE ] 如果 FILE 存在则为真。 [ -f FILE ] 如果 FILE 存在且是一个普通文件则为真。 [ -g FILE ] 如果 FILE 存在且已经设置了 SGID 则为真。 [ -k FILE ] 如果 FILE 存在且已经设置了粘制位则为真。 [ -p FILE ] 如果 FILE 存在且是一个名字管道 (F 如果 O) 则为真。 [ -r FILE ] 如果 FILE 存在且是可读的则...
2026-07-14
Linux常用命令之lsof
lsof(list open files)是一个列出当前系统打开文件的工具。在 linux 环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。 常用参数 参数 说明 -p 根据 pid 查找 直接加文件路径 查看这个文件被哪个进程打开了 -c 显示 COMMAND 列中包含指定字符的进程所有打开的文件 lsof -u username 显示所属 user 进程打开的文件 -i 用以显示符合条件的进程情况 lsof -g gid 显示归属 gid 的进程情况 lsof +d /DIR/ 显示目录下被进程打开的文件 lsof +D /DIR/ 同上,但是会搜索目录下的所有目录,时间相对较长 lsof -d FD 显示指定文件描述符的进程 lsof -n 不将 IP 转换为 hostname,缺省是不加上 -n 参数 lsof -i 用以显示符合条件的进程情况 一些例子查看 java 程序打开的文件 当然你也可以到 /proc/<进程pid&...
2026-07-14
自动清理日志脚本
公司的业务服务会打日志到磁盘, 程序已经做了日志切割, 时间一长磁盘占满会导致业务异常, 普通的清理逻辑是使用 crontab 定时删除文件, 比如每天 1 点删除创建日期超过 30 天的日志文件, 大部分情况下工作是 OK 的, 但是执行周期太长, 如果当天日志暴增, 不能及时删除文件. 也会有隐患, 优化版脚本如下: 日志清理分以下几种: 历史日志, 并且未在写入的日志, 这种可以直接删除掉. 当前正在写入的日志, 需要清理, 这种不能删除, 可以通过清空文件的方式来释放空间 set -euo pipefail 的作用:set -e: 脚本中有任何一条命令执行失败, 整个脚本就失败set -u: 脚本中的变量有任何一个变量为空, 整个脚本执行失败-o pipefail: 脚本中的管道中任何一条命令执行失败, 也会认为脚本执行失败 脚本内容: 磁盘使用率低于 80% 不会执行操作, 所以可以缩短 crontab 执行的间隔, 我一般设置成 5 分钟检测一次, crontab 内容: 注意: crontab 最后需要保留一个空行
公告
此博客为我记录运维工作总结所用,供网友阅读参考,如有侵权,请通知我,我会核实后进行处理。
欢迎加博主微信,进微信运维技术交流群:

