Linux命令增强--查找(grep whereis find which locate),切换用户(su sudo),crontabl配置

7 篇文章 0 订阅
1 篇文章 0 订阅

1. 查找命令

grep

简介
grep 命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
格式grep [option] pattern [file]
实用示例
- ps -ef | grep sshd 查找指定 ssh 服务进程
- ps -ef | grep sshd | grep -v grep 查找指定服务进程,排除 gerp 本身
- ps -ef | grep sshd – c 查找指定进程个数
- cat a.txt | grep -f b.txt 从文件中读取关键词进行搜索
- cat a.txt | grep – nf b.txt 从文件中读取关键词进行搜索,显示行号
- grep -n ‘linux’ test.txt 从文件中查找关键词,并显示行号
- cat test.txt |grep ^u 找出以 u 开头的行内容
- cat test.txt |grep ^[^u] 输出非 u 开头的行内容
- cat test.txt |grep hat$ 输出以 hat 结尾的行内容
- cat test.txt |grep -E “ed|at” 显示包含 ed 或者 at 字符的内容行


find(遍历磁盘,比较常用)

简介
find 命令在目录结构中搜索文件,并对搜索结果执行指定的操作。find 默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。实际参数很多,可使用 —help 查看。
使用实例
- find . -name “*.log” -ls 在当前目录查找以.log 结尾的文件, 并显示详细信息
- find /root/ -perm 777 查找/root/目录下权限为 777 的文件
- find . -type f -name “*.log” 查找当目录,以.log 结尾的普通文件
- find . -type d | sort 查找当前所有目录并排序
- find . -size +100M 查找当前目录大于 100M 的文件


locate

简介

  • locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法
    是先建立一个包括系统内所有档案名称及路径的数据库。 之后当寻找时就只需查
    询这个数据库(/var/lib/locatedb)。
  • Linux 系统自动创建这个数据库, 默认每天自动更新一次,所以使用 locate
    命令查不到最新变动过的文件。为了避免这种情况,可以在使用 locate 之前,
    先使用 updatedb 命令,手动更新数据库。
  • 安装命令yum -y install mlocate
    更新命令updatedb

使用实例
1. ocate /etc/sh 搜索 etc 目录下所有以 sh 开头的文件
2. locate pwd 查找和 pwd 相关的所有文件


whereis

简介
whereis 命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件,或是帮助文件。whereis 和下 locate 一样,会从数据库中查找数据,而不是像 find 命令那样,通过遍历硬盘来查找。

使用实例
1. whereis ls 将和 ls 文件相关的文件都查找出来
2. whereis -m ls 查找 ls 命令说明文档路径
3. whereis -s ls 查找 ls 源文件


which

简介
which 命令的作用是在 PATH 变量指定的路径中,搜索某个系统命令的位置,
并且返回第一个搜索结果。
使用 which 命令,就可以看到某个系统命令是否存在,以及执行的到底是哪
一个位置的命令。
使用实例
1. which pwd 查找 pwd 命令所在路径
2. which java 查找 path 中 java 的路径
PS
which 是根据使用者所配置的 PATH 变量内的目录去搜寻可运行档, 所以,不同的 PATH 配置内容所找到的命令会不一样


用户切换(su sudo)

su

简介
su 用于用户之间的切换。但是切换前的用户依然保持登录状态。如果是 root向普通或虚拟用户切换不需要密码, 反之普通用户切换到其它任何用户都需要密码验证。
使用实例
- su 在不加任何参数,默认为切换到 root 用户,但没有转到 root 用户根目录下;
这里写图片描述
- su 加参数 - ,表示默认切换到 root 用户,并转到 root 用户根目录下。
这里写图片描述
- 退出返回之前的用户: exit
这里写图片描述

su 不足: 如果某个用户需要使用 root 权限、则必须要把 root 密码告诉此用户。

sudo

简介
sudo 是为所有想使用 root 权限的普通用户设计的。可以让普通用户具有临时使用 root 权限的权利。只需输入自己账户的密码即可。当然这个普通用户必须在/etc/sudoers 文件中有配置项、才具有使用 sudo 的权利。

  • 没有配置权限之前,普通用户无法进行 root 权限操作:
    这里写图片描述
  • 使用 root 用户编辑/etc/sudoers 文件,给普通用户授权命令行输入 visudo,打开/etc/sudoers 文件,加入如下的内容,保存。
    这里写图片描述
  • 这样普通用户就可以使用 sudo 执行 root 权限的命令了。
    这里写图片描述

执行过程

  • 当用户执行 sudo 时,系统会主动寻找/etc/sudoers 文件,判断该用户是否有执行 sudo 的权限
  • 确认用户具有可执行 sudo 的权限后,让用户输入用户自己的密码确认
  • 若密码输入成功,则开始执行 sudo 后续的命令

精准控制
配置文件的解析如下
hadoop ALL=(ALL) ALL
第一个 ALL 是指网络中的主机, 我们可以指定主机名, 这样 hadoop 只可以在此主机上执行后面的命令。
第二个括号里的 ALL 是指目标用户,也就是以谁的身份去执行命令。
第三个 ALL 是指命令名了。

使用实例

  • 只允许 hadoop 用户以 root 身份在 node-23 上执行 ls 、 cat 命令,
    并且执行时候免输入密码。
    配置信息如下:
    hadoop node-23=NOPASSWD: /bin/ls, /bin/cat

  • 执行ls cat命令,可以执行
    这里写图片描述
    这里写图片描述

  • 无法执行其他命令
    这里写图片描述


crontab 配置

简介
crontab 是 Unix 和 Linux 用于设置周期性被执行的指令。 通过 crontab 命
令,可以在固定间隔时间执行指定的系统指令或 shell 脚本。时间间隔的单位可
以是分钟、小时、日、月、周及以上的任意组合。

crontabl安装

  • yum install crontabs 安装crontable
  • service crond start 启动服务
  • service crond stop 关闭服务
  • service crond restart 重启服务
  • service crond reload 重新载入配置
  • service crond status 查看 crontab 服务状态:
  • chkconfig crond –list 查看 crontab 服务是否已设置为开机启动
  • chkconfig crond on 加入开机自动启动

命令格式说明
crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]

  • -u user:用来设定某个用户的 crontab 服务
  • file: file 是命令文件的名字,表示将 file 做为 crontab 的任务列表文件
    并载入 crontab。
  • -e:编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前
    用户的 crontab 文件。
  • -l:显示某个用户的 crontab 文件内容。 如果不指定用户,则表示显示当前
    用户的 crontab 文件内容。
  • -r:删除定时任务配置,从/var/spool/cron 目录中删除某个用户的 crontab
    文件,如果不指定用户,则默认删除当前用户的 crontab 文件。
  • -i:在删除用户的 crontab 文件时给确认提示。

命令示例
crontab file [-u user] ## 用指定的文件替代目前的 crontab。
crontab -l [-u user] ## 列出用户目前的 crontab.
crontab -e [-u user] ## 编辑用户目前的 crontab.

使用实例
* * * * * command(每个*号都是都是一个空格)
分 时 日 月 周 命令
第 1 列表示分钟 1~59 每分钟用或者 /1 表示
第 2 列表示小时 0~23( 0 表示 0 点)
第 3 列表示日期 1~31
第 4 列表示月份 1~12
第 5 列标识号星期 0~6( 0 表示星期天)
第 6 列要运行的命令

使用实例

  • */1 * * * date >> /root/date.txt 每分钟执行一次 date 命令
  • 30 21 * * * /usr/local/etc/rc.d/httpd restart 每晚的 21:30 重启 apache。
  • 45 4 1,10,22 * * /usr/local/etc/rc.d/httpd restart 每月 1、 10、 22 日的 4 : 45 重启 apache。
  • 10 1 * * 6,0 /usr/local/etc/rc.d/httpd restart每周六、周日的 1 : 10 重启 apache。
  • 0,30 18-23 * * * /usr/local/etc/rc.d/httpd restart 每天 18 : 00 至 23 : 00 之间每隔 30 分钟重启 apache。
  • 23-7/1 * * * /usr/local/etc/rc.d/httpd restart晚上 11 点到早上 7 点之间,每隔一小时重启 apache
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值