SHELL解释终端
按着我的理解,SHELL终端类似于一个界面,像是windows的桌面,需要点击鼠标或其他的输入源进行操作,当点击鼠标时就会传递一个动态给服务器,告诉服务器我进行了操作,服务器根据点击的位置比如双击了文件夹,那么就是一个打开的操作,等同于linux上在终端写 cd xxxxx,在操作后必然会得到服务器的一个反馈。不论是图形化界面还是SHELL终端,他们是同一层面的,最终都是为了事现某些我们想要的操作。
SHELL是各种解释器的总成
默认的解释终端是bash,其所具备的特点如下
- 通过上下键调取之前操作过的命令(不同于history命令,一个是使用命令,一个是解释终端自带的功能)
- 参数命令等可以自动补齐
- 强大的批处理脚本(也不知道其他的解释器是没有还是怎么)
- 环境变量功能(也不知道其他的解释器是没有还是怎么+1,这个不应该属于服务的功能吗)
常见命令
命令格式
命令 参数 对象
参数格式:-x --xxxx(后面软件安装经常用,定义安装路径什么的)
查看命令内容的命令
- man 查看命令的功能和用法(一般靠百度,除非有自定义的命令,就要研究下自定义命令的参考文档在哪配置了,xxxxxxxxxxxxxxxxxxx 没找到)
常用系统工作命令
1. echo 显示
一般用于显示环境变量,或者结合重定向符处理一些写入等,另外就是shell脚本里常用来做判断
例如:
echo $NLS_LANG 显示字符集
echo “haha” &> xxxx.txt 把“哈哈”输出到这个文件
2. date 显示时间,或设置时间
date “+%Y%m%d” 显示当前时间并且以年月日形式展示,目前已知作用就是日志的命令或者备份时使用
date -s “20191002 15:59:00” 设置时间
参数说明如下
参数 | 作用 |
---|---|
%Y | 年 |
%m | 月 |
%d | 日 |
%H | 24小时 |
%I | 12小时 |
%M | 分钟 |
%S | 秒 |
%t | 控制 |
%j | 今个是今年第几天 |
3. reboot,poweroff,shutdown
reboot 重启
pweroff 关机
shutdown -r now 立刻重启
shutdown now 立刻关机
4. wget网络下载
5. ps 查看进程
常与grep同用
ps -ef|grep tomcat 查看tomcat服务状态
ps -aux 查看所有进程
进程状态解析
状态 | 含义 | 解释 |
---|---|---|
R | 运行 | running |
S | 中断 | sleep 也可以叫等待,当有请求或者调用时变为R |
D | 不可中断 | dead 死了,就不要鞭尸了 |
Z | j僵死 | zombie 没消失,类似于T状态,父进程让他死他才会死,直到父进程调用wait4()系统函数后将进程释放 |
T | 停止 | 进程收到停止信号后停止运行。 |
6. top 监控用
top涵盖了uptime,ps,free命令
第1行:系统时间、运行时间、登录终端数、系统负载(三个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)。
第2行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。
第3行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。其中数据均为CPU数据并以百分比格式显示,例如“97.1 id”意味着有97.1%的CPU处理器资源处于空闲。
第4行:物理内存总量、内存使用量、内存空闲量、作为内核缓存的内存量。
第5行:虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、已被提前加载的内存量。
- 什么状态的系统是最佳的
为1时CPU满队列运行
为5时压力过大(睡不着觉),服务器可能崩溃
趋于1最好,大于1请求会有等待,导致系统缓慢
7. fidof 查看服务占用的端口
fidof http
8. kill 杀死进程
kill pid
kill -9 pid 强制杀死
9. killall 杀死整个服务的进程
pidof http 看这个服务是否运行着
killall http 干掉这个服务所有的进程
系统状态检测命令
1. ifconfig 查看网卡信息
[root@linuxprobe ~]# ifconfig
eno16777728: flags=4163 mtu 1500
inet 192.168.10.10 netmask 255.255.255.0 broadcast 192.168.10.255
inet6 fe80::20c:29ff:fec4:a409 prefixlen 64 scopeid 0x20
ether 00:0c:29:c4:a4:09 txqueuelen 1000 (Ethernet)
RX packets 36 bytes 3176 (3.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 38 bytes 4757 (4.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 0 (Local Loopback)
RX packets 386 bytes 32780 (32.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 386 bytes 32780 (32.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
- 第一行网卡名
- 第二行 IP,掩码,网关
- 第四行mac地址
- 第五行接收的数据包数量及大小
- 第七行发送的数据包数量大小(可以查看系统下载的数量)
2. uname 查看系统内核和版本信息
- 第二个参数,主机名
- cat /etc/rehat-release 查看更准确地版本
3. uptime 查看负载
top第一行
4. free 查看内存
free -h
top第三行
5. df 查看硬盘
df -lh
6. who 查看谁登陆了
who am i 查看自己的终端是哪个用户,其实命令那行@前面就看到了
7. last 查看所有登陆记录
last
8. history 历史命令
history搭配!id使用,可直接执行那行
history
!123
9. sosreport 救命
好像没啥大用,后面看看吧
工作目录切换命令
1. pwd 我在哪
pwd
2. cd 打开
cd / 打开根目录
cd ~ 打开家目录,根据登陆用户不同而不同
cd … 打开上一层
cd - 返回上一个路径
cd xxx 打开相对路径
cd /xx/xx 打开绝对路径
均可以tab填补
3. ls 显示当前路径有啥
ll 显示详细信息
ll xxx 检索xxx打头的文件
4. cat 看小文件
cat -n 加行号
5. more 看大文件
回车可换页,下面还显示进度,像看小说
6.head 从上往下看
head -n 10 就看前十行
7. tail 从下往上看
tail -f xxx动态看
8. tr 替换
cat 123 | tr [a-z] [A-Z] &> 123 查看一个文件,然后替换里面文字,再写进去
echo “aasdadsfAAASDFF” | tr [a-z] [A-Z] &> 123
9. wc 统计
wc <参数> xxx
-l 行数(line)
-w 单词数 (word)
-c 字节数(not 字符 byte)
10. stat 查看文件的具体信息
stat xxxx
[root@linuxprobe ~]# stat anaconda-ks.cfg
File: ‘anaconda-ks.cfg’
Size: 1213 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 68912908 Links: 1
Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:admin_home_t:s0
Access: 2017-07-14 01:46:18.721255659 -0400
Modify: 2017-05-04 15:44:36.916027026 -0400
Change: 2017-05-04 15:44:36.916027026 -0400
Birth: -
Access 最后读取时间
Modify 最后修改内容的时间
Change 最后修改权限和属性的时间
11. touch 创建文件或者修改文件
touch xxxx 建目录
touch -a “20191002 12:12:00” xxxx改读取时间
touch -m “20191002 12:12:00” xxxx改修改时间
touch -d “20191002 12:12:00” xxxx 改所有时间
12. cut 根据切割符分离文件
cut -d: -f1 xxxx
-d 切割符号
:符号是什么
-f 要看的列数
1 列数
13. diff 比较不同
升级时比较配置文件或者其他文件或许有用
diff --brief a b 看是否不同
diff -c a b 列出来哪块不同
文件目录管理命令
1. touch 创建文件或者修改文件
touch xxxx 建目录
touch -a “20191002 12:12:00” xxxx改读取时间
touch -m “20191002 12:12:00” xxxx改修改时间
touch -d “20191002 12:12:00” xxxx 改所有时间
2. mkdir 创建目录
mkdir -p a/b/c 递归创建
3. cp 复制
cp <参数> a /xx/xx/b
-a = -pdr 复制属性等所有
-p 保留属性
-r 递归
-d 保留链接文件属性
-i 若存在询问是否替换
1. 为啥是保留链接文件属性?
4. mv 移动
mv a /xx/xx/b
剪切,重命名
5. rm 删除
rm -rf a 强制递归删除
6. dd 复制并生成
常用于生成一个特定大小的文件,或者取一个文件的某一部分
dd if=/dev/zero of=a count=1 bs=500M制作一个大小为500兆的文件a
dd if=/dev/cdrom of=RHEL-server-7.0-x86_64-LinuxProbe.Com.iso 这个就厉害了,只做个iso镜像文件,还能直接用。
7. file 查看文件属性
不同于stat ,前者是查询存储信息和时间信息,这个是查看属性
打包压缩与搜索命令
1. tar 压缩,解压缩
tar -czvf a.tar.gz a 压缩程gzip
tar -cjvf a.tar.bz2 a 压缩成bzip2
tar -xzvf a.tar.gz 解压
tar -xzvf a.tar.gz -C /opt/a 解压到/opt/a
2. grep 文件中查找
grep <参数> a b 从b文件里查询a数据
-i 不分大小写
-c 只返回行号
-n 显示行号
-v 反向选择
-b 查询二进制文件,把二进制文件当作文本文件
可以结合着ps等工具加管道符一起用
ps -ef|grep tomcat
3. find 查找
find -name “adsfb*” / 从根目录开始查找adsfb打头的文件
转载:https://blog.csdn.net/weixin_29394623/article/details/101919868