Linux-02 linux022权限
connygpt 2024-10-05 14:47 5 浏览
常用命令
上接 Linux-1
二、常用命令
2.1. 文本编辑命令
- more/less/uniq/tee
#-----------------more-----------------#
-u, 禁止下划线;
+<数字>, 从指定数字的行开始显示;
Ctrl+F/B 向下滚动一屏/返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
#-----------------less-----------------#
less +G /var/log/messages
-l, 搜索时忽略大小写的差异;
-N, 每一行行首显示行号;
#-----------------uniq-----------------#
-c, 在每列旁边显示该行重复出现的次数;
-d, 仅显示重复出现的行列;
-u, 仅显示出一次的行列;
#-----------------tee-----------------#
# 把数据重定向到给定文件和屏幕上
# tee指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件
ls |tee -a out.txt| cat -n
ln -sf test test_link
4195499 lrwxrwxrwx. 1 xdpp xdpp 4 427 15:55 test_link -> test
- tr/cut/sort
#---------------tr----------------#
-c,反选;
-d,删除所有属于第一字符集的字符;
-s,把连续重复的字符以单独一个字符表示;
-t,先删除第一字符集较第二字符集多出的字符;
echo aa.,a 1 b#$bb 2 c*/cc 3 ddd 4 |tr -d -c '0-9 \n' # 1 2 3 4
echo "thissss is a text linnnnnnne." |tr -s ' sn' # this is a text line.
cat file |tr -d "\r" > new_file # 删除Windows文件“造成”的'^M'字符
#---------------cut----------------#
cut -d分隔符 -f列号
ifconfig eth0 |grep " inet add" | cut -d":" -f2 | cut -d " " -f1
#---------------sort----------------#
-n, 依照数值的大小排序;
-r, 以相反的顺序来排序;
-t <分隔字符>, 指定排序时所用的栏位分隔字符;
-k, 是指定需要排序的栏位;
-u, 忽略相同行使用;
-o <输出文件>, 将排序后的结果存入制定的文件;
- stat/touch
#---------------stat----------------#
-a, change only the access time;
-m, change only the modification time;
-t, STAMP user [[CC]YY]MMDDhhmm[.ss]
-r, --reference=FILE
-c, 不建立任何文件
#---------------touch----------------#
# touch [参考文件] [真正文件]
touch -r refer.log real.log
touch -c -t 202104252335 real.log
touch -c -d "2021-04-25 23:35:12.00000000 +0530" real.log
2.2. 打包压缩命令与搜索命令
- find
# 基础用法
find /home ! -name "*.txt"
# find + xargs: argument line too long
find /foo/bar -name '*.mp4' -print0 | xargs -I{} -0 mv {} /some/path
# 高级用法
find . \( -name "*.txt" -o -name "*.pdf" \) # 当前目录及子目录下查找所有以.txt和.pdf结尾的文件
find . -regex ".*\(\.txt\|\.pdf\)#34; # 正则
# find . -type 文件类型
find . -type f -atime -7 # -7,7天之内; atime, 访问时间; mtime, 修改时间; ctime, 变化时间;
find . -type f -size -10k
find . -type f -user root -exec chown tom {} \;
find $HOME/. -name "*.txt" -ok rm {} \; # -ok和-exec行为一样,不过它会给出提示;
find . -type f -mtime +30 -name "*.log" -exec cp {} old \;
# 要忽略的路径参数要紧跟着搜索的路径之后,否则该参数无法起作用
1. find /data/web/ssy/* -path /data/web/ssy/tmp -prune -o -type d -exec /usr/bin/du -sh {} \; |grep '[0-9]G'|sort -rh|head -10
2. find /home/xdpp/gaia/log -path "/home/xdpp/gaia/log/kafka" -prune -o -type d -regex '.*log/.*' -print -exec rm -rf {} \;
- xargs
# 1. xargs的默认命令是echo, 空格是默认定界符;
xargs 默认是以空白字符 (空格, TAB, 换行符) 来分割记录的
# 2. 通过xargs的处理, 换行和空白将被空格取代;
-n, 选项多行输出;
-d, 可以自定义一个定界符;
-i, 用{}代替传递的数据
-I {}, 用{}来代替传递的数据-n[数字] 设置每次传递几行数据
# name name
# name name
echo "nameXnameXnameXname" |xargs -dX -n2
# -0将\0作为定界符,解决/bin/rm Argument list too long.
find . -type f -name "*.log" -print0 |xargs -0 rm -f
find . -type f -name "*.jpg" -print |xargs tar -czvf images.tar.gz
ls |grep .log |xargs -i mv {} {}.bak
ls |grep .log |xargs -I {} mv {} {}.bak
- 归档和压缩
# -z, 用Gzip压缩/解压, *.tar.gz;
# -j, 用Bzip2压缩/解压, *.tar.bz2;
tar -czvf diff.tar.gz /diff
tar -xzvf diff.tar.gz -C /diff # 指定解压目录 -C
tar -t diff.tar.gz # -t, 查看压缩包内容
tar -czvf myfile.tar.gz --exclude=home/logs home
# zip [选项] 源文件
zip -q -r html.zip /home/html
zip -r /opt/var.zip /var -x "*.log" # -x,排除"*.log"
# unzip
unzip -d /home/html html.zip
unzip -v abc.zip
# gzip [选项] 源文件
注:压缩文件生成,但是源文件也消失了
gzip -c anaconda-ks.cfg >anaconda-ks.cfg.gz # 将压缩数据输出到标准输出中, 并保留源文件;
# gunzip file.gz
2.3. 三剑客
- grep
# grep [选项] "搜索的内容" file
# -f,根据模式文件处理;-v,反选;
grep -v -f a.txt b.txt # 输出b文件中在a文件不同的行;
# -E,使用ERE;-o,--only-matching;
grep -E -v "^$|^#" /etc/httpd/conf/httpd.conf
grep -Eo "(([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])"
# -l,列出文件内容符合指定的范本样式的文件名称;
# -n,在显示符合范本样式的那一列之前,标示出该列的编号;
# -i,忽略字符大小写的差别;
# -o,only只显示匹配的;
# -A num, After;
# -B num, Before;
# -C num, 前后各num行;
# egrep
-c, 只输出匹配的行数
-v, 反向匹配
- sed
Usag: sed [选项] '模式1动作1; 模式2动作2;...' 文件
# 选项:
1. -n --only, 只输出命令匹配的内容(不显示模式空间内容); 4. -r, --regex开启支持扩展正则;
2. -i, 修改结果直接应用于文件; 5. -e, 多个命令组合 或者 用`;`分割;
3. -f scriptfile, 从sed脚本读入sed操作;
# 模式:
1. /pattern1/,/pattern2/ # 查询从匹配模式1~模式2之间的行
2. /pattern/pattern/ # 查询包含两个模式的行
3. x,/pattern/ # 从与x行~与pattern匹配行之间的行
# 动作(command):
1. i\str a\str c\str # 在指定行前插入//在指定行后追加//行替换用c后边的字符串替换原数据
2. r w # 读入//写入;
sed '/^test/a\this is a test line' file # 将 this is a test line 追加到 以test 开头的行后面;
sed -i '2a\this is a test line' tst.conf # 在 test.conf 文件第2行之后插入 this is a test line
sed '1,2r /etc/issue' /etc/fstab
sed '/oot/w /tmp/oot/txt' /etc/fstab # 所有包含oot的行都被写入file里;
3. d s p q 删除//替换//打印//退出
sed -e '1,5d' -e 's/test/check/' file # 删除1,5行,替换每行第一个test;
sed '/^$/d' file # 删除空行
echo aaa BBB | sed -n 's/\([a-z]\+\) \([A-Z]\+\)/\2 \1/p' # BBB aaa
sed -n 's/^root/#&/p' passwd # 注释掉以root开头的行
sed -i '/^[[:space:]]*#/d' nginx.conf
4. g, 全局替换,将保持缓冲区的内容替换到模式缓冲区;
5. G, 将保持缓冲区的内容追加到模式缓冲区;
6. h, 拷贝模板块的内容到内存中的缓冲区;
7. H, 追加模板块的内容到内存中的缓冲区;
sed -i 's/SELINUX=enforcing/SELINUX=disable/' /etc/selinux/config # setenforce 0
8. n, 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令;
9. N, 追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码;
- awk 关于 grep、sed 和 awk 的基础用法
Usag: awk [选项] '条件1{动作1} 条件2{动作2} ...' 文件
# 内部变量
1. $0, 当前读入整行数据;
2. $n, 当前读入行的第n个字段,第n列;
3. 列分隔符
FS, Field Separator 输入字段(列)分隔符,默认是空格或制表符 BEGIN{FS=":"};
OFS, 输出字段(列)分隔符,默认是空格;
4. 行分隔符
RS, Record Separator 输入记录(行)分隔符,默认是换行符\n;
ORS, 输出记录(行)分隔符,默认是换行符\n;
5. 列号/行号
NF, Number Field 统计当前记录中字段(列)个数,列号;
NR, Number Record 行号,当前处理的文本行的行号;
FNR, Field Number Record 同NR,各文件分别计数的行号;
# Example
awk 'BEGIN{FS=":";OFS=":"}{print $1,$2}' /etc/passwd |head -n5 # root:x
awk -F: '{print "%-12s %-6s %-8s\n", $1, $2, $NF}'
cat /etc/passwd |grep "/bin/bash" |awk 'BEGIN{FS=":"}{printf $1 "\t" $3 "\t行号:"NR "\t字段数:" NF "\n"}'
------------------------------------------------------------------------------------------
awk -F ":" '{ if($3<500) { print $1,"系统用户" } else{ print $1,"普通用户" }}' /etc/passwd
awk -F ':' 'BEGIN{count=0;} {name[count]=$1; count++;} END{for(i=0; i<NR; i++) print i, name[i]}' /etc/passwd
awk '$1==2 {print $1,$3}' log.txt
netstat -n |awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
#!/bin/sh
# stress-1.0.4-16.el7.x86_64.rpm /usr/bin/stress
# ln -sf /usr/bin/stress /root/java_vm
ps -ef | grep java_vm|grep -v grep|awk '{print $2}'|xargs -i kill -9 {}
nohup /root/java_vm -c 6 -t 86400s &
- vim
# 重定向 https://www.cnblogs.com/520playboy/p/6275022.html
0-标准输入 1-标准输出 2-标准错误(2> 表示stderr标准错误)
&-等同于 > -代表重定向到哪里
command > file 2>&1 # 将命令所产生的标准输出和标准错误重定向到file中
ls *test* 1>/dev/null 2>&1
ls *test* &>/dev/null
# 同时打印到屏幕和文件里
ls -l | tee -a lsls.log
cmd > 文件 2>&1 # ??以覆盖方式把正确和错误保存到同一个文件中
cmd &>> 文件
cmd >> 文件1 2>>文件2
A. cmd &>/dev/null
B. cmd >/dev/null 2>&1
C. cmd 2>&1 >/dev/null # ??屏幕显示错误信息,标准输出至/dev/null
D. cmd 2>/dev/null 1>&2
# 命令
:%s@^[^#]@#&@ 注释
:2,32s@^[^#]@#&@
:s/xyz/&er/g 替换,xyz ~ xyzer
vimtutor
**# 多文件分割:**
vim -o|-O FILE1 FILE2...
-o,水平分割; :next :prev :last :first
-O,垂直分割; Ctrl+w,Arrow 在窗口间切换
**# 单文件窗口切换:**
Ctrl+w,s split 水平分割; Ctrl+w,q 取消相邻窗口
Ctrl+w,v vertical 垂直分割; Ctrl+w,o 取消全部窗口
:wqall 退出
**# 执行命令**
:!command ,执行命令; :r !command ,读入命令的输出
:r filename ,读文件到当前文件; :w filename ,当前文件写入另一个文件;
# set 设置
set paste # 实现vim 按照源文件格式复制
2.4. Extra(离线 rpm 包网站)
- rpm
rpm -ivh filename.rpm
rpm -Uvh filename.rpm # 升级
rpm -e filename.rpm # --nodeps 不检查依赖性 卸载软件?, -e,–erase
rpm -qf filename # 查询文件属于哪个包
rpm -qd filename # 查询所安装的包的帮助文件
rpm -qi filename.rpm # 查询包描述信息 -p(查未安装,包全名)
rpm -qc filename # 查询所安装的包的配置文件
rpm -ql filename.rpm # 列出包文件信息 -p(查未安装)
rpm -qa | grep filename # 查询所安装的包的名称
rpm --import /etc/pki/rpm-gpg/RPM*
rpm2cpio xxx.rpm | cpio -div
- yum
yum repolist all/enabled/disables # 列出软件仓库
yum list all/installed # 列出仓库所有软件/已安装的
yum info 包名称
yum history # 查看历史
yum search Package
yum install 包名称
yum reinstall 包名称 # 卸载包
yum update 包名称
yum remove 包名称 # 慎用?? 会把依赖的一些包也删掉 rpm -e --nodeps nginx
yum clean all
yum check-update
yum-config-manager --add-repo http://www.example.com/example.repo
yum-config-manager --enable/--disabled reponame
# 常用工具:(yum install epel-release.noarch)
yum install lrzsz gcc gcc-c++ gdb pcre pcre-devel zlib zlib-devel ruby \
openssl openssl-devel patch wget curl bash-completion \
lsof tcpdump nc nmap htop screen vim git redhat-lsb net-tools \
vsftp tree
- 离线安装包
# 可以联网的机器
# yumdownloader is a program for downloading RPMs from Yum repositories
yum install yum-utils -y
mkdir /tmp/ansible
yumdownloader --resolve --destdir /tmp/ansible ansible
yumdownloader --resolve --destdir /tmp/ansible createrepo
tar -czvf ansible.tar.gz /tmp/ansible
# 内网机器
# 上传tar包,制作离线yum源
cd /tmp/ansible
rpm -ivh deltarpm-3.6-3.el7.x86_64.rpm
rpm -ivh python-deltarpm-3.6-3.el7.x86_64.rpm
rpm -ivh createrepo-0.9.9-28.el7.noarch.rpm
cd /tmp
createrepo ansible
vim /etc/yum.repos.d/ansible.repo
[ansible]
name=ansible
baseurl=file:///tmp/ansible
gpgcheck=0
enabled=1
yum install ansible -y
三、用户操作
Linux 命令之 usermod-来自苦逼运维博客
- /etc/passwd 用户名:密码标识位:UID:GID:组名:家目录:shell
root:x:0:0:root:/root:/bin/bash
- /etc/shadow 用户名:MD5paswd:密码修改时间(19700101):两次修改密码时间间隔:密码有效期:密码到期前的警告天数:密码过期后的宽限天数:密码失效时间
root:加密的密码::0:99999:7:::
- useradd userdel usermod
-m/-M, 创建(不)家目录, 用于(非)系统用户
-r, 设置系统账号不会自动生成家目录
-c, 增加用户描述信息
-D, 查看/etc/default/useradd 文件的当前设置
useradd -d /home/xy -u 8888 -s /sbin/nologin xy-aG, 修改用户附加组,追加不覆盖
-L/-U, 锁定/解锁用户
usermod -aG root xy 用户 xy 追加附加组 root
- passwd chpasswd
-l/-u, 锁定/解锁用户
-e, 使用户密码立即过期,下次登录强制修改密码
-S, 显示用户密码相关描述echo "123456" |passwd --stdin xy
7 天内不能更改密码,60 天后必须改密,过期前 10 天通知,过期后 30 天禁用该用户
passwd -n 7 -x 60 -w 10 -i 30 xychpasswd < user.txt user.txt = userid:passwd
# chage/chsh/chfn
-M, 最长使用期限
chage -l xy
chage -M 99999 xy
# 强制用户下次登陆时修改密码,并且设置密码最低有效期0和最高有限期90,提前15天发警报提示
chage -d 0 -m 0 -M 90 -W 15 test
chage -E '2014-09-30' test
# gpasswd
gpasswd -a ${USER} docker
gpasswd -a / -d user group # 把用户从组中加入/删除
# visudo /etc/sudoers
# https://blog.51cto.com/chenfage/1830424
-l, 查看授权情况
-c, 检查语法
用户/组 机器=(角色) 可以执行的命令
root ALL=(ALL) ALL
xy ALL=(ALL) NOPASSWD: /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
相关推荐
- 3分钟让你的项目支持AI问答模块,完全开源!
-
hello,大家好,我是徐小夕。之前和大家分享了很多可视化,零代码和前端工程化的最佳实践,今天继续分享一下最近开源的Next-Admin的最新更新。最近对这个项目做了一些优化,并集成了大家比较关注...
- 干货|程序员的副业挂,12个平台分享
-
1、D2adminD2Admin是一个完全开源免费的企业中后台产品前端集成方案,使用最新的前端技术栈,小于60kb的本地首屏js加载,已经做好大部分项目前期准备工作,并且带有大量示例代码,助...
- Github标星超200K,这10个可视化面板你知道几个
-
在Github上有很多开源免费的后台控制面板可以选择,但是哪些才是最好、最受欢迎的可视化控制面板呢?今天就和大家推荐Github上10个好看又流行的可视化面板:1.AdminLTEAdminLTE是...
- 开箱即用的炫酷中后台前端开源框架第二篇
-
#头条创作挑战赛#1、SoybeanAdmin(1)介绍:SoybeanAdmin是一个基于Vue3、Vite3、TypeScript、NaiveUI、Pinia和UnoCSS的清新优...
- 搭建React+AntDeign的开发环境和框架
-
搭建React+AntDeign的开发环境和框架随着前端技术的不断发展,React和AntDesign已经成为越来越多Web应用程序的首选开发框架。React是一个用于构建用户界面的JavaScrip...
- 基于.NET 5实现的开源通用权限管理平台
-
??大家好,我是为广大程序员兄弟操碎了心的小编,每天推荐一个小工具/源码,装满你的收藏夹,每天分享一个小技巧,让你轻松节省开发效率,实现不加班不熬夜不掉头发,是我的目标!??今天小编推荐一款基于.NE...
- StreamPark - 大数据流计算引擎
-
使用Docker完成StreamPark的部署??1.基于h2和docker-compose进行StreamPark部署wgethttps://raw.githubusercontent.com/a...
- 教你使用UmiJS框架开发React
-
1、什么是Umi.js?umi,中文可发音为乌米,是一个可插拔的企业级react应用框架。你可以将它简单地理解为一个专注性能的类next.js前端框架,并通过约定、自动生成和解析代码等方式来辅助...
- 简单在线流程图工具在用例设计中的运用
-
敏捷模式下,测试团队的用例逐渐简化以适应快速的发版节奏,大家很早就开始运用思维导图工具比如xmind来编写测试方法、测试点。如今不少已经不少利用开源的思维导图组件(如百度脑图...)来构建测试测试...
- 【开源分享】神奇的大数据实时平台框架,让Flink&Spark开发更简单
-
这是一个神奇的框架,让Flink|Spark开发更简单,一站式大数据实时平台!他就是StreamX!什么是StreamX大数据技术如今发展的如火如荼,已经呈现百花齐放欣欣向荣的景象,实时处理流域...
- 聊聊规则引擎的调研及实现全过程
-
摘要本期主要以规则引擎业务实现为例,陈述在陌生业务前如何进行业务深入、调研、技术选型、设计及实现全过程分析,如果你对规则引擎不感冒、也可以从中了解一些抽象实现过程。诉求从硬件采集到的数据提供的形式多种...
- 【开源推荐】Diboot 2.0.5 发布,自动化开发助理
-
一、前言Diboot2.0.5版本已于近日发布,在此次发布中,我们新增了file-starter组件,完善了iam-starter组件,对core核心进行了相关优化,让devtools也支持对IAM...
- 微软推出Copilot Actions,使用人工智能自动执行重复性任务
-
IT之家11月19日消息,微软在今天举办的Ignite大会上宣布了一系列新功能,旨在进一步提升Microsoft365Copilot的智能化水平。其中最引人注目的是Copilot...
- Electron 使用Selenium和WebDriver
-
本节我们来学习如何在Electron下使用Selenium和WebDriver。SeleniumSelenium是ThoughtWorks提供的一个强大的基于浏览器的开源自动化测试工具...
- Quick 'n Easy Web Builder 11.1.0设计和构建功能齐全的网页的工具
-
一个实用而有效的应用程序,能够让您轻松构建、创建和设计个人的HTML网站。Quick'nEasyWebBuilder是一款全面且轻巧的软件,为用户提供了一种简单的方式来创建、编辑...
- 一周热门
- 最近发表
- 标签列表
-
- kubectlsetimage (56)
- mysqlinsertoverwrite (53)
- addcolumn (54)
- helmpackage (54)
- varchar最长多少 (61)
- 类型断言 (53)
- protoc安装 (56)
- jdk20安装教程 (60)
- rpm2cpio (52)
- 控制台打印 (63)
- 401unauthorized (51)
- vuexstore (68)
- druiddatasource (60)
- 企业微信开发文档 (51)
- rendertexture (51)
- speedphp (52)
- gitcommit-am (68)
- bashecho (64)
- str_to_date函数 (58)
- yum下载包及依赖到本地 (72)
- jstree中文api文档 (59)
- mvnw文件 (58)
- rancher安装 (63)
- nginx开机自启 (53)
- .netcore教程 (53)