Linux-工作常用命令积累

文件目录操作

# pwd 显示工作目录
$ pwd                     #查看当前所在目录# 清理屏幕$ clear# sftp登录
$ sftp -oPort=22 cts@10.132.127.22# ftp登录$ ftp 10.132.127.22
# mkdir 创建目录
$ mkdir AAA               #建立一个名为 AAA 的子目录
$ mkdir -p BBB/Test       #在工作目录下的BBB目录中,建立一个名为Test的子目录,若BBB目录原本不存在,则建立一个
$ mkdir -m 777 test3      #创建权限为777的目录
$ mkdir -p-m 750 text5/text6 #当前目录下创建/text5/text6,权限为750

# touch 创建空文件
$ touch file              #创建一个名为“file”的新的空白文件

# echo 创建带内容文件
$ echo abcd > 1.txt       #生成一个带内容文件,如文件存在覆盖文件内容
$ echo 1234 >> 1.txt      #生成一个带内容文件,如文件存在插入内容到文件首行

# mv 改名或移动文件/目录 
$ mv aaa bbb              #将文件 aaa 更名为 bbb
$ mv info/ logs           #将info目录放入logs目录中,如果logs目录不存在,则将info改名为logs
$ mv /usr/student/* .     #再如将/usr/student下的所有文件和目录移到当前目录下

# rm 删除文件或目录
$ rm -rf test.txt         #删除文件
$ rm -rf homework         #删除指定目录下所有文件及目录
$ rm -rf *                #删除当前目录下的所有文件及目录

# cp 复制文件或目录
$ cp -r test.txt newtest    #将test.txt复制到"newtest"下
$ cp –r test/ newtest       #将当前目录"test/"下的所有文件复制到新目录"newtest"下

# tar 建立/还原gz压缩文件
$ tar -czvf test.tar.gz a.c    #压缩 a.c文件为test.tar.gz
$ tar -tzvf test.tar.gz        #列出压缩文件内容
$ tar -xzvf test.tar.gz        #解压文件
$ tar -zcvf test.tar.gz test\  #压缩文件夹
$ tar -zxvf test.tar.gz        #解压文件夹

# unzip 建立/还原zip压缩文件
$ unzip test.zip               #将压缩文件text.zip在当前目录下解压缩
$ unzip -n test.zip -d /tmp    #将压缩文件text.zip在指定目录/tmp下解压缩,如果已有相同的文件存在,要求unzip命令不覆盖原先的文件
$ unzip -o test.zip -d tmp/    #将压缩文件test.zip在指定目录/tmp下解压缩,如果已有相同的文件存在,要求unzip命令覆盖原先的文件
$ unzip -l abc.zip             #查看压缩文件中包含的文件
$ unzip -v abc.zip             #查看压缩文件目录信息,但是不解压该文件

# rz 用来本地上传文件到服务器
$ rz -r                        #执行该命令后,在弹出框中选择要上传的文件即可

# sz 用来服务器文件发送到本地
$ sz test.txt                  #执行该命令后,在弹出框中选择要下载目录

安装关机重启

# yum 基于RPM的软件包管理器
# 查看可能批量安装的列表
$ yum grouplist

# 安装指定的程序包nginx
$ yum install nginx
# 安装指定的程序包nginx,自动选择y,全自动
$ yum -y install nginx
# yum本地化安装nginx,并自动安装依赖
$ yum --nogpgcheck localinstall nginx-1.20.0.tar.gz

# 更新指定程序包nginx
$ yum update nginx

# 删除程序包package1
$ yum remove | erase package1   

# 检查 MySQL 是否已安装
yum list installed | grep mysql
yum list installed mysql*

# 查看内核版本命令
$ cat /proc/version
$ uname -r
$ uname -a

# 查看linux系统版本-CentOS
$ cat /etc/redhat-release

# 列出所有版本信息,适用于所有的Linux发行版
$ lsb_release -a
$ cat /etc/issue

$ shutdown -h 10    # 计算机将于10分钟后关闭,且会显示在登录用户的当前屏幕中
$ shutdown -h now   # 计算机会立刻关机
$ shutdown -h 22:22 # 计算机会在这个时刻关机
$ shutdown -r now   # 计算机会立刻重启
$ shutdown -r +10   # 计算机会将于10分钟后重启
$ reboot            # 重启
$ halt              # 关机

scp 加密的方式在本地主机和远程主机之间复制文件

# 语法
scp (选项) (参数)

# 选项
-1:使用ssh协议版本1;
-2:使用ssh协议版本2;
-4:使用ipv4;
-6:使用ipv6;
-B:以批处理模式运行;
-C:使用压缩;
-F:指定ssh配置文件;
-i:identity_file 从指定文件中读取传输时使用的密钥文件(例如亚马逊云pem),此参数直接传递给ssh;
-l:指定宽带限制;
-o:指定使用的ssh选项;
-P:指定远程主机的端口号;
-p:保留文件的最后修改时间,最后访问时间和权限模式;
-q:不显示复制进度;
-r:以递归方式复制。
# 参数
源文件:指定要复制的源文件。
目标文件:目标文件。格式为user@host:filename(文件名为目标文件的名称)。


# 从远程机器复制文件到本地目录
## 从10.10.10.10机器上的/opt/soft/的目录中下载nginx-0.5.38.tar.gz 文件到本地/opt/soft/目录中
$ scp root@10.10.10.10:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/

# 从远程机器复制目录到本地
## 从10.10.10.10机器上的/opt/soft/中下载mongodb目录到本地的/opt/soft/目录来
$ scp -r root@10.10.10.10:/opt/soft/mongodb /opt/soft/

# 上传本地目录到远程机器指定目录
## 上传本地目录/opt/soft/mongodb到远程机器10.10.10.10上/opt/soft/scptest的目录中去
$ scp -r /opt/soft/mongodb root@10.10.10.10:/opt/soft/scptest

用户组

# 检查redis组和用户是否存在
$ cat /etc/group|grep nginx
# 创建nginx用户组
$ groupadd nginx
# 创建nginx用户指定登录默认路径并分配到nginx用户组
$ useradd -g nginx -G nginx -d /usr/local/nginx nginx
# 创建nginx用户密码(本示例密码nginx123)
$ passwd nginx
# 修改用户登录默认目录
$ usermod -md /usr/local/nginx/up nginx# 删除用户$ userdel -r nginx
# 添加文件的写权限
$ chmod u+w /etc/sudoers
# vi编辑用户权限配置
$ vi /etc/sudoers

# 添加nginx用户获得sudo使用权
nginx          ALL=(ALL)         ALL

# 撤销文件的写权限
$ chmod u-w /etc/sudoers

# 变更目录及其下所有文件、子目录的拥有者为redis
chown -R redis /usr/local/redis
# 变更目录及其下所有文件、子目录的拥有者和所属群组为redis
chown -R redis.redis /usr/local/redis

# 将/usr/meng及其子目录下的所有文件的用户组改为mengxin
$ chgrp -R mengxin /usr/meng
# 更改文件ah的组群所有者为 newuser
$ chgrp newuser ah

端口防火墙

# 方案一:关闭防火墙
# centos7下查看防火墙状态的命令
$ firewall-cmd --state
# 关闭防火墙的命令
$ systemctl stop firewalld.service
# 禁止开机启动,永久关闭防火墙
$ systemctl disable firewalld.service

# 方案二:对外开放端口
# 查看本机关于IPTABLES的设置情况
$ iptables -L -n --line-number
# 对外开放8080端口
$ iptables -A INPUT -p tcp --dport 8880 -j ACCEPT
# 按类型和序号删除IPTABLES规则
$ iptables -D INPUT 1
$ iptables -D FORWARD 1
$ iptables -D OUTPUT 1

# 查看当前所有已经使用的端口情况
$ netstat -nultp

# 查看8080端口号是否被占用
$ netstat -anp|grep 8080

参考:https://www.cnblogs.com/alimac/p/5848372.html

ps & kill 查看删除进程

# 查看Java进程
$ ps -ef|grep java
# 删除进程
$ kill -9 12345
# 删除所有java进程命令
$ pkill –9 java

ls & ll 显示文件信息

$ ls       # 仅列出当前目录可见文件
$ ls -l    # 列出当前目录可见文件详细信息
$ ls -hl   # 列出详细信息并以可读大小显示文件大小
$ ls -al   # 列出所有文件(包括隐藏)的详细信息
$ ls --human-readable --size -1 -S --classify # 按文件大小排序
$ du -sh * | sort -h # 按文件大小排序(同上)

$ ll       # 仅列出当前目录可见文件
$ ll -l    # 列出当前目录可见文件详细信息
$ ll -hl   # 列出详细信息并以可读大小显示文件大小
$ ll -al   # 列出所有文件(包括隐藏)的详细信息
$ ll --human-readable --size -1 -S --classify # 按文件大小排序
$ du -sh * | sort -h # 按文件大小排序(同上)

cat 显示文本文件内容

1、查看日志 前 n行:
cat 文件名 | head -n 数量
        cat  log.log | head -n 200  # 查看log.log前200行

2、查看日志 尾 n行:
cat 文件名 | tail -n 数量
        cat  log.log | tail -n 200  # 查看log.log后200行

3、根据 关键词 查看日志 并返回关键词所在行:
方法一:cat 文件名 | grep "关键词"
        cat  log.log | grep "train"  # 返回log.log中包含train的所有行

方法二:grep -i "关键词" 文件名  (与方法一效果相同,写法不同)
        grep -i "train" log.log  # 返回log.log中包含train的所有行

4、显示匹配关键字内容操作
cat 文件名 | grep -C 20 '关键字' 显示文件里匹配关键字那行以及上下20行
cat 文件名 | grep -B 20 '关键字' 显示关键字及前20行
cat 文件名 | grep -A 20 '关键字' 显示关键字及后20行

# 例如我要在catalina.out文件内容中找到关键字 788871c5-508d-4b8c-9d23-2636180e994c 的前后20行
cat catalina.out | grep -C 20 '788871c5-508d-4b8c-9d23-2636180e994c'# 查看cps-batch-402.out日志文件,进程为asyncTaskExecutor-17,在14:29-14:31时间段内所有数据
cat cps-batch-402.out | grep -a 'asyncTaskExecutor-17' | grep -a '2020-01-07 14:29\|2020-01-07 14:30\|2020-01-07 14:31'# 此条通过正则表达式过滤出20200901-20200909日包含耗时关键字的所有行
cat cbms-web-701.out | grep "2020-09-0[1-9]" | grep "耗时"# 查看并复制cps-batch-402.out日志,进程为asyncTaskExecutor-14所有数据到ceshi.out文件中
cat cps-batch-402.out | grep 'asyncTaskExecutor-14' > ceshi.out

grep 在指定的文本文件中查找指定的字符串

#语法
grep [option] pattern file   

grep 'linux' test.txt   #从文件中查找关键词,忽略大小写,默认情况区分大小写
grep test test*         #查找前缀有“test”的文件包含“test”字符串的文件
grep -o "you" ab.log    #只显示被模式匹配到的字符串,而不是整个行
grep 'ab' *             #在当前目录搜索带'ab'行的文件
grep -r 'ab' *          #在当前目录及其子目录下搜索'ab'行的文件
grep -l -r 'ab' *       #在当前目录及其子目录下搜索'ab'行的文件,但是不显示匹配的行,只显示匹配的文件
grep -nr BLOG* .        #查找子目录,匹配后输出行号,这里的点表示当前目录
grep -lr BLOG* .        #查找子目录,匹配后只输出文件名
grep tomcat *           # 这样就可以查到所有tomcat的信息和是哪个日志文件
grep -rn 'ftp*' --color # 搜索所在目录下所有文件包含ftp的行内容,并红色高亮显示ftp关键字

ps -ef|grep java        #查找指定进程
ps -ef|grep -c java     #查找指定进程个数
cat test.txt | grep -f test2.txt   #从文件中读取关键词进行搜索,默认是显示的是行

find 在指定目录下查找文件

# 语法
find path -option [-print] [-exec -ok command]{} \   
find . -name "*.c"      #将目前目录及其子目录下所有延伸档名是 c 的文件列出来
find . -type f          #将目前目录其其下子目录中所有一般文件列出
find . -ctime -20       #将目前目录及其子目录下所有最近20天内更新过的文件列出
# 查看gcc是否安装rpm -qa | grep gccyum list installed | grep gcc
# 查看Nginx相关文件(卸载软件使用)whereis nginx# yum清理nginxyum remove nginx
# 查找当前目录下文件内容包含字符串string的文件
find . | xargs grep string 
# 查找当期目录下匹配文件名"*.env"中包含字符串"*18004'"的文件
find . -type f -name '*.env' | xargs grep '18004'
# 查询模糊查询关键字文件
find / -name *tomcat*
# 查找目录
find /usr/local/ -name '查找关键字' -type d
# 查找文件
find /usr/local/ -name '查找关键字' -print

vi 文本文件编辑

#语法
vi  #运行模式:
        #编辑模式:等待编辑命令输入
        #输入模式:编辑模式下,输入i进入插入模式,插入文本信息
        #压缩参数:在编辑模式下,输入:进行命令模式

#命令:
:q               #直接退出vi
:w               #写文件
:wq              #写文件之后退出编辑
:wq!             #则为强制储存后离开
:q!              #强制退出
:w!              #写文件,忽略警告信息
:w file          #将当前内容保存成某个文件
:set number      #在编辑文件显示行号
:set nonumber    #在编辑文件不显示行号
:e               #刷新
? [关键字]        #查找关键字内容,从下往上查找,按 N 显示下一个
/ [关键字]        #查找关键字内容,从上往下查找,按 N 显示下一个
[Ctrl] + [f]     #屏幕『向下』移动一页,相当于 [Page Down]按键 (常用)
[Ctrl] + [b]     #屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用)
[Ctrl] + [d]     #屏幕『向下』移动半页
[Ctrl] + [u]     #屏幕『向上』移动半页

img

系统环境变量

# 查看所有全局变量 - env | printenv
## env
env

## printenv
printenv

# 查看某个环境变量 - printenv | echo
## printenv [变量]
printenv SHELL

## echo $[变量]
echo $SHELL
# 显示CentOS 版本号cat /etc/redhat-release
# 详细参考
# https://jingyan.baidu.com/article/00a07f382b84d682d028dc9c.html

执行命令记录和登录记录

history # 查看过去执行过的命令历史
history [n]       # n为数字,列出最近的n条命令
history |grep sh  # 查看sh执行历史

last # 命令用于显示用户最近登录信息
last -10         # 表示只显示10行
last -n 5 -a -i  # 显示5行且主机IP显示为最后一列
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值