文件目录操作
# 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] #屏幕『向上』移动半页
系统环境变量
# 查看所有全局变量 - 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显示为最后一列