一.系统命令

1.操作系统

uname -a

2.主机名

#查看主机名
hostname#查看当前linux的版本
more /etc/RedHat-releasecat /etc/redhat-release

3.linux 目录

  • bin (binaries)存放二进制可执行文件
  • sbin (super user binaries)存放二进制可执行文件,只有 root 才能访问
  • etc (etcetera)存放系统配置文件
  • usr (unix shared resources)用于存放共享的系统资源
  • home 存放用户文件的根目录
  • root 超级用户目录
  • dev (devices)用于存放设备文件
  • lib (library)存放跟文件系统中的程序运行所需要的共享库及内核模块
  • mnt (mount)系统管理员安装临时文件系统的安装点
  • boot 存放用于系统引导时使用的各种文件
  • tmp (temporary)用于存放各种临时文件
  • var (variable)用于存放运行时需要改变数据的文件

4.清屏

#shell清屏
clear#windows清屏
cls#清屏
ctrl+l

5.配置文件

vim /etc/profile/   #修改配置文件
source /etc/profile    #设置配置文件生效

6.linux 回退命令

#意思是到上一级目录
cd ..#返回上两级目录
cd ../..#意思是返回到上次的目录,类似windows返回
cd -#意思是回到根目录
cd /#转到家目录中
cd ~#转到根目录下的usr目录中———绝对路径
cd /usr#转到当前目录下的test子目录中——相对路径
cd test

7.修改密码

#修改口令
passwd#修改一个用户的口令 (只允许root执行)
passwd user1#设置用户口令的失效期限
chage -E 2005-12-31 user1

8.搜历史

#搜命令
ctrl+r#自动补全
tab

9.系统配置

命令 含义
cat /proc/cpuinfo 查看 linux 系统的 CPU 型号、类型以及大小
cat /proc/meminfo 查看 linux 系统内存大小的详细信息,可以查看总内存,剩余内存、可使用内存等信息
uname -a 查看内核/操作系统/CPU 信息
head -n 1 /etc/issue 查看操作系统版本
hostname 查看计算机名
lspci -tv 列出所有 PCI 设备
lsusb -tv 列出所有 USB 设备
lsmod 列出加载的内核模块
env 查看环境变量

10.重启

#先关机再重启
shutdown -r#先关机不重启
shutdown -h#先关机再关电源
halt#重启
reboot

11.分区

#查看挂接的分区状态
mount | column -t#查看所有分区
fdisk -l#查看所有交换分区
swapon -s#查看磁盘参数(仅适用于IDE设备)
hdparm -i /dev/hda#查看启动时IDE设备检测状况
dmesg | grep IDE

12.终端工具

  • Tabby
  • xshell
  • mac

二.用户与群组

1.查看用户

#查看活动用户
w#查看指定用户信息
id <用户名>#查看用户登录日志
last#查看系统所有用户
cut -d: -f1 /etc/passwd#查看系统所有组
cut -d: -f1 /etc/group#查看当前用户的计划任务
crontab -l

2.创建用户组

#创建一个新用户组
groupadd group_name#删除一个用户组
groupdel group_name#重命名一个用户组
groupmod -n new_group_name old_group_name

3.创建用户

#创建一个属于 “admin” 用户组的用户
useradd -c "Name Surname " -g admin -d /home/user1 -s /bin/bash user1#创建一个新用户
useradd user1#删除一个用户 ( ‘-r’ 排除主目录)
userdel -r user1#修改用户属性
usermod -c “User FTP” -g system -d /ftp/user1 -s /bin/- nologin user1

三.文件命令

1.创建文件

#touch
touch log.out#vim
vim log.out#cp
cp log1.out log.out#> >>
#> 覆盖原文件
#>> 追加在原文件的末尾
>> log.outls > log.out
ps -ef |grep java >> log.out
echo $PATH >>log.out
cat >> log.out

创建文件可以通过以下六个方式来完成。

  • >:标准重定向符允许我们创建一个 0KB 的空文件。
  • touch:如果文件不存在的话,touch 命令将会创建一个 0KB 的空文件。
  • echo:通过一个参数显示文本的某行。
  • printf:用于显示在终端给定的文本。
  • cat:它串联并打印文件到标准输出。
  • vi/vim:Vim 是一个向上兼容 Vi 的文本编辑器。它常用于编辑各种类型的纯文本。
  • nano:是一个简小且用户友好的编辑器。它复制了 pico 的外观和优点,但它是自由软件。
  • head:用于打印一个文件开头的一部分。
  • tail:用于打印一个文件的最后一部分。
  • truncate:用于缩小或者扩展文件的尺寸到指定大小。

2.创建文件夹

#创建文件夹
mkdir /home/ds#创建多级文件夹
mkdir -p project/App#没有使用“-p”这个参数的情况下
mkdir project project/App

3.删除文件

-r 就是向下递归,不管有多少级目录,一并删除
-f 就是直接强行删除,不作任何提示的意思rm -rf /var/log/httpd/access   #删除文件夹
rm -f /var/log/httpd/access.log  #删除文件

4.删除文件夹

#删除文件夹的命令
rmdir 文件夹名

5.重命名

将 abc 改为 1234

mv abc.txt 1234.txt

6.复制所有文件

#复制所有文件
cp -r /home/packageA/* /home/cp/packageB/

7.复制单个文件

cp 111.txt  /target

8.移动所有文件

#移动所有文件
mv  /kwan/blog/blog/docs/.vuepress/public/*    /kwan/blogImg

9.解压缩

#解压缩
tar -zxvf  xxxx.zip
-z或--gzip或--ungzip #通过gzip指令处理备份文件。
-x或--extract或--get #从备份文件中还原文件。
-v或--verbose #显示指令执行过程。
-f<备份文件>或--file=<备份文件> #指定备份文件。#压缩
tar -cvf 1.tar 1.txt

10.nano 编辑文件

#进入文件
nano 111.txt;#直接修改文件;#保存
Ctrl+O#Enter确认#退出
Ctrl+X#Enter确认

11.文件传输

#服务器之间 copy
#两台机器IP分别为:A.104.238.161.75,B.43.224.34.73。
#在A服务器上操作,将B服务器上/home/lk/目录下所有的文件全部复制到本地的/root目录下,
scp -r root@43.224.34.73:/home/lk   /root
scp -r root@10.201.0.26:/opt/dct3.0/masternode  /opt/dct3.0/#从本地机器到服务器
scp /Users/qinyingjie/Downloads/8983939_qinyingjie.top_nginx/8983939_qinyingjie.top.key root@120.79.36.53:/etc/nginx/cert
scp /Users/qinyingjie/Downloads/8983939_qinyingjie.top_nginx/8983939_qinyingjie.top.pem root@120.79.36.53:/etc/nginx/cert

12.查看文件大小

Size 表示的是文件大小,这个也是大多数人看到的大小;

Blocks 表示的是物理实际占用空间

stat testfile

13.文件类型

#红色文件:
压缩文件或者包文件#蓝色文件:
目录#绿色文件:
可执行文件,可执行的程序#白色文件:
一般性文件,如文本文件,配置文件,源码文件等#浅蓝色文件:
链接文件,主要是使用ln命令建立的文件#红色闪烁:
表示链接的文件有问题#黄色:
表示设备文件#灰色:
表示其它文件#共显示了七列信息,从左至右依次为:
权限、文件数、归属用户、归属群组、文件大小、创建日期、文件名称

14.软连接

#创建软连接
ln -s /usr/local/java/jdk1.8.0_152/bin/java /usr/bin/java#查看软连接
ls -lrt /usr/bin/java

硬连接:指通过索引节点来进行连接。在 Linux 的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在 Linux 中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

软连接:另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于 Windows 的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

命令使用

#软链接创建具体用法是:
#-s 是代号(symbolic)的意思。象征的;符号的;使用符号的
ln -s 源文件 软连接地址
ln   -s   /usr/local/bin/less     /bin/less#正确的删除方式(删除软链接,但不删除实际数据)
rm -rf  ./test_chk_ln#错误的删除方式
rm -rf ./test_chk_ln/ (这样就会把原来test_chk下的内容删除)

第一,ln 命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;

第二,ln 的链接又软链接和硬链接两种

软链接就是 ln -s ** **,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间

硬链接 ln ** **,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。

-f : 链结时先将与 dist 同档名的档案删除
-d : 允许系统管理者硬链结自己的目录
-i : 在删除与 dist 同档名的档案时先进行询问
-n : 在进行软连结时,将 dist 视为一般的档案
-s : 进行软链结(symbolic link)
-v : 在连结之前显示其档名
-b : 将在链结时会被覆写或删除的档案进行备份
-S SUFFIX : 将备份的档案都加上 SUFFIX 的字尾
-V METHOD : 指定备份的方式
--help : 显示辅助说明
--version : 显示版本

删除软连接

rm -rf 【软链接地址】

上述指令中,软链接地址最后不能含有“/”,当含有“/”时,删除的是软链接目标目录下的资源,而不是软链接本身。

修改软连接

n -snf 【新目标目录】 【软链接地址】

这里修改是指修改软链接的目标目录

15.文件授权

#颜色变绿,可执行
chmod +x main-kill.sh worknode.sh worknode-kill.shrwx |数字 权限组合
----+-----------
001 | 1   x     执行
010 | 2   w     写入
100 | 4   r     读取
101 | 5   rx
110 | 6   rw
111 | 7   rwx#方法一:
chmod 777 file_name
777代表三个维度的权限 创建人、创建组、其他#方法二: a-all  u-用户 g-组  o-其他   +代表给权限  -删权限
chmod a+x a.txt      # 所有组添加执行权限
chmod g-w o-w a.txt  # 禁止同组和其他用户修改
chmod a+rw a.txt     # 所有用户可读可写
  • linux 文件权限的描述格式解读

  • r 可读权限,w 可写权限,x 可执行权限(也可以用二进制表示 111 110 100 --> 764)
  • 第 1 位:文件类型(d 目录,- 普通文件,l 链接文件)
  • 第 2-4 位:所属用户权限,用 u(user)表示
  • 第 5-7 位:所属组权限,用 g(group)表示
  • 第 8-10 位:其他用户权限,用 o(other)表示
  • 第 2-10 位:表示所有的权限,用 a(all)表示

16.上传下载

rz、sz 是 Linux/Unix 同Windows进行 ZModem 文件传输的命令行工具。

优点:就是不用再开一个 sftp 工具登录上去上传下载文件。

  • sz(下载):将选定的文件发送(send)到本地机器

  • rz(上传):运行该命令会弹出一个文件选择窗口,从本地选择文件上传到 Linux 服务器

17.查找文件

#知道在home下面
find /home -name test.txt
find -name test.txt

18.列出文件

ls -al

19.文件交互

1.sftp

  • 上传 mac 本地文件至 Linux 服务器:put localfiledirectory remotefiledirectory

  • 下载 Linux 服务器文件至 mac 本地:get remotefiledirectory localfiledirectory

2.scp

  • 上传 mac 本地文件至 Linux 服务器:scp localfiledirectory root@ip:remotefiledirectory

  • 下载 Linux 服务器文件至 mac 本地:scp root@ip:remotefiledirectory localfiledirectory

20.文件类型

file start.sh

21.重复 uniq

删除文件中的重复内容。

基础语法

# 去除name.txt重复的行数,并打印到屏幕上
uniq name.txt# 把去除重复后的文件保存为 uniq_name.txt
uniq name.txt uniq_name.txt

【注意】它只能去除连续重复的行数。

常用参数

  • -c 统计重复行数, uniq -c name.txt
  • -d 只显示重复的行数, uniq -d name.txt

22.重定向

把本来要显示在终端的命令结果,输送到别的地方(到文件中或者作为其他命令的输入)。

1.输出重定向 >

> 表示重定向到新的文件, cut -d , -f 1 notes.csv > name.csv ,它表示通过逗号剪切 notes.csv 文件(剪切完有 3 个部分)获取第一个部分,重定向到 name.csv 文件。

我们来看一个具体示例,学习它的使用,假设我们有一个文件 notes.csv ,文件内容如下:

Mark1, 951 / 100, 很不错1;
Mark2, 952 / 100, 很不错2;
Mark3, 953 / 100, 很不错3;
Mark4, 954 / 100, 很不错4;
Mark5, 955 / 100, 很不错5;
Mark6, 956 / 100, 很不错6;
复制代码;

执行命令: cut -d , -f 1 notes.csv > name.csv 最后输出如下内容:

Mark1;
Mark2;
Mark3;
Mark4;
Mark5;
Mark6;
复制代码;

【注意】使用 > 要注意,如果输出的文件不存在它会新建一个,如果输出的文件已经存在,则会覆盖。因此执行这个操作要非常小心,以免覆盖其它重要文件。

2.输出重定向 >>

表示重定向到文件末尾,因此它不会像 > 命令这么危险,它是追加到文件的末尾(当然如果文件不存在,也会被创建)。

再次执行 cut -d , -f 1 notes.csv >> name.csv ,则会把名字追加到 name.csv 里面。

Mark1;
Mark2;
Mark3;
Mark4;
Mark5;
Mark6;
Mark1;
Mark2;
Mark3;
Mark4;
Mark5;
Mark6;
复制代码;

我们平时读的 log 日志文件其实都是用这个命令输出的。

3.输出重定向 2>

标准错误输出

cat not_exist_file.csv > res.txt 2> errors.log
复制代码
  • 当我们 cat 一个文件时,会把文件内容打印到屏幕上,这个是标准输出;
  • 当使用了 > res.txt 时,则不会打印到屏幕,会把标准输出写入文件 res.txt 文件中;
  • 2> errors.log 当发生错误时会写入 errors.log 文件中。

4.输出重定向 2>>

标准错误输出(追加到文件末尾)同 >> 相似。

5.输出重定向 2>&1

标准输出和标准错误输出都重定向都一个地方

cat not_exist_file.csv > res.txt 2>&1  # 覆盖输出
cat not_exist_file.csv >> res.txt 2>&1 # 追加输出

四.日志查询

1.查询目标前后几行

#打印匹配行的前后 5 行
grep -5 'parttern' inputfile#打印匹配行的前后 5 行
grep -C 5 'parttern' inputfile#打印匹配行的后 5 行
grep -A 5 'parttern' inputfile

2.more 可翻页查看

more /etc/man.config
--More--(31%) <== 重点在这一行,光标也会在这里等待你的命令
  • 空格键(Space):代表向下翻一页。
  • Enter:代表向下滚动一行。
  • / 字符串:代表在当前显示的内容中,向下查找 “字符串” 这个关键字。
  • :f:立刻显示出文件名与当前的行号。
  • q:代表立即退出,不予显示。
  • b 或 [ctrl]-b:往回翻,不过该操作只对文件有用。

有时候我们需要搜索should这个字符串

[wenjie@localhost ~]$ more /etc/man.config
#
# Generated automatically from man.conf.in by the
# configure script.
#
# man.conf from man-1.6d
....(中间省略)....
/should <== 输入了 / 之后,光标会在最下面一行等待

你输入了**/之后,光标会在最后一行等待,并且等待你的输入,你输入了字符串后并且按下[Enter]之后,就开始向下查找。如果想重复查找该字符串,可以直接按下n**即可。

3. cat 最后 10 行

cat -n xxx.log | grep tail -n 10

4.tail 尾部

#从 ILinNum 开始显示到结束的内容
tail -n +iLinNum#显示最后 iLinNum 行的内容
tail -n iLinNum#实时查看被添加到一个文件中的内容
tail -f /var/log/messages

5.head 头部

#显示开头 iLinNum 行的内容
head -n iLinNum#同 head -n iLinNum
head -n +iLinNum

6.less

#类似于 ‘more’ 命令,但是它允许在文件中和正向操作一样的反向操作
less file1

more: 顾名思义显示更多
less: 由于 more 不能后退,就取 more 的反义词 less 加上后退功能
所以 Linux 里流传着这样一句话:“less is more”.

总结下 more 和 less 的区别:

  1. less 可以按键盘上下方向键显示上下内容,more 不能通过上下方向键控制显示
  2. less 不必读整个文件,加载速度会比 more 更快
  3. less 退出后 shell 不会留下刚显示的内容,而 more 退出后会在 shell 上留下刚显示的内容
  4. 由于 more 不能后退

7.反向查找

#从最后一行开始反向查看一个文件的内容
tac file1

8.wc 命令

#统计文本的行数,字数,字符数
wc 1.bxt#字符数
-m wc -m 1.txt#文本字数
-W wc -w 1.txt#文本行数
- wc -l1.txt

五.网络相关

1.ssh

1.ssh 登录

ssh -p 22 root@120.78.213.67

2.curl

#请求信息
curl  www.baidu.com  -vl#带参数请求
curl -d "search=你是谁" "http://gpt.kube.moguit.cn/text"

3.ping

#测试网络连通性
ping www.baidu.com

4.ifconfig

#查看ip
ifconfig

2.端口号

1.lsof

lsof -i:54321#根据进程pid查端口
lsof -i | grep pid#根据端口port查进程
lsof  -i:port

2.netstat

#netstat 网络连接信息,端口等信息
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。#提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到#列出所有端口
netstat -a#列出所有 tcp 端口
netstat -at#列出所有 udp 端口
netstat -au#只显示监听端口
netstat -l#只列出所有监听 tcp 端口
netstat -lt#只列出所有监听 udp 端口
netstat -lu#只列出所有监听 UNIX 端口
netstat -lx#查看启动的端口方式(神器)
netstat -tunlp#常用,端口被哪个应用占用
netstat -tunlp | grep 54321#根据进程pid查端口:
netstat -nap | grep pid#根据端口port查进程
netstat -nap | grep port

3.中间件端口号

80   HTTP服务器,默认端口号为80/tcp(木马Executor开放此端口)
443     HTTPS(securely transferring web pages)服务器,默认端口号为443/tcp  443/udp
80/8080/3128/8081/9098     HTTP协议代理服务器常用端口号:80/8080/3128/8081/9098
1080    SOCKS代理协议服务器常用端口号:1080
21  FTP(文件传输)协议代理服务器常用端口号:21
23  Telnet(远程登录)协议代理服务器常用端口号:23
23  Telnet(不安全的文本传送),默认端口号为23/tcp(木马Tiny Telnet Server所开放的端口)
21  FTP,默认的端口号为21/tcp(木马Doly Trojan、Fore、Invisible FTP、WebEx、WinCrash和Blade Runner所开放的端口)
69  TFTP(Trivial File Transfer Protocol),默认端口号为69/udp
22  SFTP、SSH(安全登录)、SCP(文件传输)、端口号重定向,默认的端口号为22/tcp
25  SMTP Simple Mail Transfer Protocol(E-mail),默认端口号为25/tcp(木马Antigen、Email Password Sender、Haebu Coceda、Shtrilitz Stealth、WinPC、WinSpy都开放这个端口)
110 POP3 Post Office Protocol(E-mail),默认端口号为110/tcp
7001    weblogic的默认端口是7001
9080    Webshpere应用程序,默认端口号为9080
9090    webshpere管理工具,默认端口号9090
8080    JBOSS,默认端口号为8080
8080   TOMCAT,默认端口号为8080
3389    WIN2003远程登录,默认端口号为3389
8081    Symantec AV/Filter for MSE,默认端口号为 8081
1521    Oracle 数据库,默认的端口号为1521
1158    ORACLE EMCTL,默认的端口号为1158
8080    Oracle XDB(XML 数据库),默认的端口号为8080
2100    Oracle XDB FTP服务,默认的端口号为2100
1433    SqlServer数据库server,默认的端口号为1433/tcp 1433/udp
1434    SqlServer数据库monitor,默认的端口号为1434/tcp 1434/udp
3306    mySql 默认的端口号为3306
9092    pointbase 默认的端口号为9092
27017   mongodb 默认的端口号为27017
6379    redis 默认的端口号为6379
11211 memcached 默认的端口号为11211

3.防火墙 firewalld

#查看状态:
systemctl status firewalld#停止:
systemctl disable firewalld#禁用:
systemctl stop firewalld#启动:
systemctl start firewalld#开启端口号
firewall-cmd --add-port=8080/tcp --permanent#重新加载
firewall-cmd --reload#查询防火墙是否放行8080
firewall-cmd --query-port=8080/tcp

4.磁盘

1.df

#这条命令再熟悉不过。以更易读的方式显示目前磁盘空间和使用情况。
df -h#以inode模式来显示磁盘使用情况。
df -i

df -h 和 df -i 的区别是什么?同样是显示磁盘使用情况,为什么显示占用百分比相差甚远?

df -h 的比较好解释,就是查看磁盘容量的使用情况。

至于 df -i,先需要去理解一下 inode
以博客主的个人理解,最简单的说法,inode 包含的信息:

文件的字节数,拥有者 id,组 id,权限,改动时间,链接数,数据 block 的位置。相反是不表示文件大小。

这就是为什么 df -h 和 df -i 显示的结果是不一样的原因。

注意:在 df -h 和 df -i 显示使用率 100%,基本解决方法都是删除文件。

df -h 是去删除比较大无用的文件-----------大文件占用大量的磁盘容量。

df -i 则去删除数量过多的小文件-----------过多的文件占用了大量的 inode 号。

2.du

du 命令是检查硬盘使用情况,统计文件或目录及子目录使用硬盘的空间大小。

#计算当前文件夹的总磁盘占用量,
# -s选项表示计算总和, -h选项表示以恰当的K/M/G单位展示
du -sh *

3.iostat

#磁盘情况查看 每个1s刷新一次 刷新5次
#IO输入输出统计 磁盘活动情况 cpu使用情况
iostat -dx 1 5

4.lsblk

lsblk :这个命令可以看到有几个硬盘,每个硬盘分了几个区

5.fdisk

fdisk -l |grep Disk:查看硬盘大小

fdisk -l |grep Disk

5.内存

1.free

#查看内存使用情况
free#以M形式查看
free  -m#内存占用情况
free -h

2.前 8 内存

ps aux | head -1;ps aux |grep -v PID |sort -rn -k +4 | head -8

3.top

内存总览

top

4.查看内存

cat /proc/meminfogrep MemTotal /proc/meminfogrep MemTotal /proc/meminfo | cut -f2 -d:free -m |grep "Mem" | awk '{print $2}'

5.释放内存

释放前较好sync 一下,防止丢数据。

sync

清除缓冲的方法

 echo 3 > /proc/sys/vm/drop_caches

6.buffer 和 cache

Linux 为了提升读写性能,会消耗一部分内存资源缓存磁盘数据,对于内核来说,buffer 和 cache 其实都属于已经被使用的内存。但当应用程序申请内存时,如果 free 内存不够,内核就会回收 buffer 和 cache 的内存来满足应用程序的请求。这就是稍后要说明的 buffer 和 cache。

  • cache 是存在于 cpu 和内存之间的缓冲区,存放的是从 disk 上读取到的数据
  • buff 是用于存放要输出到块存储的数据

6.cpu 信息

1.lscpu

lscpu

2.cpuinfo

cat /proc/cpuinfo

3.物理 cpu 个数

cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l

4.逻辑 cpu 个数

cat /proc/cpuinfo |grep "processor"|wc -l

5.cpu 主频

cat /proc/cpuinfo |grep MHz|uniq

6.查看 cpu 是 32 位还是 64 位

#查看CPU位数(32 or 64)getconf LONG_BITecho $HOSTTYPEuname -a

7.查看系统时间

date
uptime
w
who
last

8.进程

1.ps

#查询进程的进程id,以及详细信息ps ef | grep java

2.kill

#杀进程
kill -9 pid

3.jps

java 进程

jps

9.iostat

iostat 主要用于输出磁盘 IO 和 CPU 的统计信息。

iostat 属于 sysstat 软件包。可以用 yum install sysstat 直接安装。

iostat [选项] [<时间间隔>] [<次数>]#间隔1秒,总共显示5次
iostat 1 5#每隔2秒,显示一次设备统计信息.
iostat -d 2#每隔2秒,显示一次设备统计信息.总共输出3次.
iostat -d 2 3#每隔2秒显示一次sda, sdb两个设备的扩展统计信息,共输出3次.
iostat -x sda sdb 2 3#每隔2秒显示一次sda及上面所有分区的统计信息,共输出3次.
iostat -p sda 2 3#以M为单位显示所有信息
iostat -m

命令参数:

  • -c: 显示 CPU 使用情况
  • -d: 显示磁盘使用情况

cpu 属性值说明

  • **%user:**CPU 处在用户模式下的时间百分比。
  • **%nice:**CPU 处在带 NICE 值的用户模式下的时间百分比。
  • **%system:**CPU 处在系统模式下的时间百分比。
  • **%iowait:**CPU 等待输入输出完成时间的百分比。
  • **%steal:**管理程序维护另一个虚拟处理器时,虚拟 CPU 的无意识等待时间百分比。
  • **%idle:**CPU 空闲时间百分比。

备注:如果%iowait 的值过高,表示硬盘存在 I/O 瓶颈,%idle 值高,表示 CPU 较空闲,如果%idle 值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量。%idle 值如果持续低于 10,那么系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU。

disk 属性值说明:

  • **device:**磁盘名称
  • **tps:**每秒钟发送到的 I/O 请求数.
  • **Blk_read/s:**每秒读取的 block 数.
  • **Blk_wrtn/s:**每秒写入的 block 数.
  • **Blk_read:**读入的 block 总数.
  • **Blk_wrtn:**写入的 block 总数.

六.vim 相关

1.删除

命令 含义
x 删除光标所在处字符
nx 删除光标所在处后的 n 个字符
dd 删除光标所在行。ndd 删除 n 行
dG 删除光标所在行到末尾行的所有内容
D 删除光标所在处到行尾的内容
:5,7d 删除指定范围的行
dw 删除一个单词/光标之后的单词剩余部分
d$ 删至行尾
d0 删至行首

2.复制

命令 含义
np 复制多遍
yw 光标移到想要被复制词的词首,输入
p 光标移到想到粘贴的位置,输入
5yl 光标移到想要被复制字符的首位置,若想复制 5 个字符输入:
yy 复制当前行
nyy 复制多行 (比如 3yy,复制 3 行)

3.撤销

命令 含义
u undo,取消上一步操作
Ctrl + r redo,返回到 undo 之前,恢复撤销
r 替换光标所在处的字符
R 从光标所在处开始替换,按 Esc 键结束
nu 撤销 n 次

4.翻屏

  • Ctrl+f: 向下翻一屏
  • Ctrl+b: 向上翻一屏
  • Ctrl+d: 向下翻半屏
  • Ctrl+u: 向上翻半屏

5.跳转定位

命令 含义
:set nu 显示行号
:set nonu 取消行号
gg 跳到首行
G 跳到末行
:n 跳到第 n 行
0 行内跳转,绝对行首
$ 行内跳转,绝对行尾
^ 行内跳转,行首的第一个非空白字符
option+ < 间隔向前移动光标

6.修改文本

命令 含义
i 在光标前插入
I 在光标当前行开始插入
a 在光标后插入
A 在光标当前行末尾插入
o 在光标当前行的下一行插入新行
O 在光标当前行的上一行插入新行
:wq 保存并退出

7.常用快捷键

命令 含义
Shift+ zz 保存退出,与“:wq"作用相同
v 进入字符可视模式
V 进入行可视模式
CtrI + v 进入块可视模式

8.注释

一、Visual block
加注释
1、首先按键盘上的ESC进入命令行模式
2、再按Ctrl+V进入VISUAL BLOCK模式
3、利用上下左右键调整需要注释多少行以及行的宽度
4、再按Shift+i或s进入插入模式
5、输入代表注释的符号,比如#
6、再次按ESC键,这时就可完成多行注释 可能需要等上一会,不要着急、去注释
前三步与加注释相同
1、首先按键盘上的ESC进入命令行模式
2、再按Ctrl+V进入VISUAL BLOCK模式
3、利用上下左右键调整需要去注释多少行以及行的宽度
4、再按d即可完成去注释二、正则表达式
选中起始、结束行,对行首做替换动作加注释
23,43s/^/#/g
去注释
23,43s/^#//g

七.实际应用

1.关闭某一进程脚本

#1.grep查询进程关键字
ps -ef|grep redis#2、用awk输出进程ID
awk '{print $2}'#3、最后批量kill
xargs kill -9ps -ef | grep redis | awk '{print $2}' |xargs kill -9

2.判断是否是闰年

#! /bin/bash## This is a script that determines whether it is a leap year.## The default object is this year. And you can specify a year
## as parameter input.if [ $# -gt 1 ]
thenecho ParameterError:This script has one parameter.
elif [ $# -eq 1 ]
thenyear=$1fla=1
elseyear=`date +"%Y"`fla=0
fiif [ $(($year%4)) -eq 0 ]&&[ $(($year%100)) -ne 0 ]||[ $(($year%400)) -eq 0 ]
thenecho $year is a leap year.
elseecho $year is not a leap year.
fi

3.shell 换行

#删除文件换行并自动yesyes | rm  dct-manager-starter-1.0.0-SNAPSHOT.jar0916-1  \
dct-manager-starter-1.0.0-SNAPSHOT.jar0916-2  \
dct-manager-starter-1.0.0-SNAPSHOT.jar0916-3  \
dct-manager-starter-1.0.0-SNAPSHOT.jar0916-4  \
dct-manager-starter-1.0.0-SNAPSHOT.jar0916-5  \
dct-manager-starter-1.0.0-SNAPSHOT.jar0916-6  \
dct-manager-starter-1.0.0-SNAPSHOT.jar0916-7  \

4.虚拟内存

由于双十一白嫖的阿里云 CentOS 服务器, 配置有点低(2 核 4G)

我使用 vuepress 搭建的自己的博客网站,在部署的时候,使用命令编译安装 npm run docs:dev 出现如下错误

virtual memory exhausted: Cannot allocate memory
make: *** [ext/fileinfo/libmagic/apprentice.lo] Error 1
已杀死

当然,仅仅一个前端应用应该是不对造成这么大的内存占用的,因为还部署了其他的一些服务,还不想停掉.可以查一下前 8 内存占用排名,如下图所示,都是不想停掉的

ps aux | head -1;ps aux |grep -v PID |sort -rn -k +4 | head -8

解决办法就是使用 swap 内存
使用命令 free -m 查看当前 swap 内存大小,可以看到下面的结果 swap 行全是 0,表示没有启用 swap 内存。

free -mtotal        used        free      shared  buff/cache   available
Mem:            990         607         288           0          94         265
Swap:             0           0           0

创建 2G 的虚拟内存文件 /opt/swap,分别执行如下三个命令

dd if=/dev/zero of=/opt/swap bs=1024 count=2048000mkswap /opt/swapswapon /opt/swap

再次查询 swap 内存,可以看到 swap 已经被分配了 2G

free -mtotal        used        free      shared  buff/cache   available
Mem:            990         609          78           0         302         244
Swap:          1999           0        1999

2G 的虚拟内存启用完成!

【檀越剑指大厂--linux】Linux汇总相关推荐

  1. 【檀越剑指大厂—SpringCloudAlibaba】SpringCloudAlibaba高阶

    一.Nacos 1.什么是 nacos? Nacos 的全称是 Dynamic Naming and Configuration Service,Na 为 naming/nameServer 即注册中 ...

  2. 【檀越剑指大厂--mysql】mysql高阶篇

    文章目录 一.Mysql 基础 1.数据库与实例? 2.mysql 的配置文件 3.mysql 体系结构 4.innodb 的特点? 5.innodb 和 myisam 的区别 6.其他存储引擎? 7 ...

  3. 【檀越剑指大厂—kafka】kafka高阶篇

    一.认识 kafka 1.kafka 的定义? Kafka 传统定义:Kafka 是一个分布式的基于发布/订阅模式的消息队列(Message Queue),主要应用于大数据实时处理领域.发布/订阅:消 ...

  4. 【檀越剑指大厂--redis】redis高阶篇

    一.数据结构与对象 1.什么是 SDS? Redis 没有直接使用 C 语言传统的字符吕表示 (以空字符结尾的字符数组,以下简称 C 字符串),而是自己构建了 一种名为简单动态字符串(simple d ...

  5. 【檀越剑指大厂--并发编程】并发编程总结

    并发编程 一.并发基础 1.什么是并行和并发? 并行,表示两个线程同时(同一时间)做事情. 并发,表示一会做这个事情,一会做另一个事情,存在着调度. 单核 CPU 不可能存在并行(微观上). 2.什么 ...

  6. 【檀越剑指大厂--网络安全】网络安全学习

  7. 【檀越剑指大厂--ElasticSearch】ElasticSearch进阶

  8. 【檀越剑指大厂--redis】redis基础篇

  9. 【檀越剑指大厂--mysql】mysql基础篇

    一.服务端设置 1.启动/关闭服务器 net start mysql net stop mysql 2.登录退出 mysql -u root -pmysql -u root -p20191014 #进 ...

最新文章

  1. 昔日“东方神童”逝世,4岁读完初中课程,17岁中科院硕博连读,网友:湖南华容的传说...
  2. 网站常见攻击与防御汇总
  3. 使用java获取本机mac
  4. python 第13章:面向对象编程
  5. java 中 如何sum 乘法_java 加法 乘法问题
  6. 理解Scala - 核心规则
  7. 《设计的品格 探索×呈现×进化的InDesign美学》目录—导读
  8. Python 获取父级文件夹的名字
  9. 数据降维之多维缩放MDS(Multiple Dimensional Scaling)
  10. Android你可能要用到的自定义View分享
  11. 安装虚拟环境和Flask
  12. Java基础 IO流——第三部分
  13. Aurora Engine 游戏引擎入门 21(统一渲染架构 FIXED)
  14. mysql with ties_SQL SERVER使用WITH TIES获取前几行数据
  15. Pygame实战:花巨资筹备的一款Tom猫游戏,你玩过嘛?
  16. Android开发笔记(一百四十八)自定义输入法软键盘
  17. 阿里VIP会员看腾讯视频?这不是一个意外的选择
  18. 爬虫实战:链家租房数据爬取,实习僧网站数据爬取
  19. 2018-4-30-win2d-CanvasRenderTarget-vs-CanvasBitmap
  20. 人工智能数学基础--不定积分1:概念与性质

热门文章

  1. 恒生o32系统介绍_恒生指数日内空间预测模型和实盘对照20201104日
  2. 怎么快速无损地把avi转换mov格式
  3. HDU最大连续子序列
  4. 空气过滤网行业专用术语
  5. Apk文件如何安装到Android模拟器的方法详解
  6. 国标平台对接成功,预览失败,下级双网域设置错误
  7. 计算WPS表格中带文本的计算表达式的结果
  8. 矩阵教程之一:随机矩阵
  9. 深度强化学习综述(上)
  10. Unity3D WebGL手机浏览器警告处理