在阅读的过程中有任何问题,欢迎一起交流
QQ:1494713801
记录了常用的Linux命令,方便以后使用:
一、查看服务器配置
1、查看逻辑CPU个数及CPU型号
命令:cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
结果:
含义:24个逻辑CPU、CPU叫Xeon、CPU型号是E5-2620、CPU主频2.1G赫兹
2、查看所有物理处理器的ID
命令:cat /proc/cpuinfo | grep 'physical id' | sort|uniq
3、查看每个物理处理器中的处理核心(cpu core)数
命令:cat /proc/cpuinfo | grep 'cpu cores' | sort|uniq
4、查看所有处理核心(cpu core)的ID
命令:cat /proc/cpuinfo | grep 'core id' | sort|uniq
5、查看所有逻辑处理器的ID(超线程技术)
命令:cat /proc/cpuinfo | grep 'processor' | sort|uniq
结果:
含义:在这台服务器上,物理CPU有2个,每个物理CPU中有6个处理核心,实际处理核心数为12,而逻辑处理器为24个(超线程技术)
6、服务器CPU的详细信息
命令:cat /proc/cpuinfo
结果:
含义:processor:逻辑处理器的ID(有几个processor就有几个逻辑处理器)
physical id:物理处理器的ID(有几个不同的physical id就有几个物理处理器)
core id:每个处理核心的ID
cpu cores:位于每个物理处理器中的内核数目
sibings:位于每个物理处理器中的逻辑处理器的数目
二、测试服务器性能
1、每隔几秒显示服务器虚拟内存使用情况
命令:vmstat 间隔秒数 查看次数
结果:
含义:
Procs(进程): r: 运行队列中进程数量 ; b: 等待IO的进程数量,即阻塞的进程
Memory(内存): swpd: 虚拟内存大小 ; free: 可用内存大小 ; buff: 用作缓冲的内存大小 ; cache: 用作缓存的内存大小
Swap: si: Amount of memory swapped in from disk (/s). ; so: Amount of memory swapped to disk (/s).
IO:(现在的Linux版本块的大小为1024bytes) bi: 每秒读取的块数 ; bo: 每秒写入的块数
系统: in: 每秒中断数,包括时钟中断 ; cs: 每秒上下文切换数。
CPU(以百分比表示): us: 用户进程执行时间(user time) ; sy: 系统进程执行时间(system time) ; id: 空闲时间(包括IO等待时间) ; wa: 等待IO时间
2、查看服务器运行时间和负载信息
命令:uptime
结论:
含义:信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载
每隔一段时间执行uptime可以使用命令:watch -n 秒数 uptime(命令:watch -n 秒数 要重复执行的命令)
3、动态查看系统进程与资源状况
命令:top
结论:
含义:
前五行是系统整体的统计信息。
第一行是任务队列信息,同 uptime 命令的执行结果;
第二、三行为进程和CPU的信息,当有多个CPU时,这些内容可能会超过两行(内容如下:Tasks: 29 total 进程总数;1 running 正在运行的进程数;28 sleeping 睡眠的进程数;0 stopped 停止的进程数;0 zombie 僵尸进程数;Cpu(s): 0.3% us 用户空间占用CPU百分比;1.0% sy 内核空间占用CPU百分比;0.0% ni 用户进程空间内改变过优先级的进程占用CPU百分比;98.7% id 空闲CPU百分比;0.0% wa 等待输入输出的CPU时间百分比;0.0% hi0.0% si);
最后两行为内存信息(内容如下:Mem: 2070564k total 物理内存总量;1340828k used 使用的物理内存总量;729736k free 空闲内存总量;168636k buffers 用作内核缓存的内存量;Swap: 4192924k total 交换区总量;0k used 使用的交换区总量;4192924k free 空闲交换区总量;894080k cached 缓冲的交换区总量)。
进程信息区:统计信息区域的下方显示了各个进程的详细信息。
4、查看CPU的利用率
命令:mpstat -P ALL 2 5
含义:每隔2s查看一次,共执行5次
三、复制命令
命令: cp -r 源文件夹/. 目标文件夹
结论:
含义:将源文件夹下的所有文件复制到目标文件夹下
四、文本编辑器
1、打卡文件
命令:vi 文件名
如:vi filename: 打开或新建文件,并将光标置于第一行首
vi +n filename: 打开文件,并将光标置于第n行首
vi + filename: 打开文件,并将光标置于最后一行首
vi +/pattern filename: 打开文件,并将光标置于第一个与pattern匹配的串处
vi -r filename: 在上次正用vi编辑时发生系统崩溃,恢复filename
vi filename....filename: 打开多个文件,依次进行编辑
2、有指令模式切换到输入模式
新增 (append)
a :从光标所在位置后面开始新增资料,光标后的资料随新增资料向后移动。
A:从光标所在列最后面的地方开始新增资料。
插入 (insert)
i:从光标所在位置前面开始插入资料,光标后的资料随新增资料向后移动。
I :从光标所在列的第一个非空白字元前面开始插入资料。
开始 (open)
o :在光标所在列下新增一列并进入输入模式。
O: 在光标所在列上方新增一列并进入输入模式。
3、从输入模式切换到指令模式,则需在输入模式下键入ESC键
4、退出编辑器
:wq和:x是存盘退出;
:q是直接退出,如果文件已有新的变化,vi会提示你保存文件而:q命令也会失效,这时你可以用:w命令保存文件后再用:q退出,或用:wq或:x命令退出;
:q!命令将不保存文件而直接退出vi。
五、PostgreSQL使用
接入PostgreSQL数据库: psql -h 数据库IP地址 -U 数据库名
查看该数据库中的所有表:\dt
切换数据库:\c 目标数据库
查看数据库中的某个表结构:\d 数据库名
查看数据库中表中的记录:select * from 表名;
六、Shell脚本的运行
步骤:
1、切换到脚本所在目录下
2、执行./脚本名 (如:./myshell.sh)
3、有时需要为脚本赋予可执行的权限:chmod +x 脚本名 (如:chmod +x myshell.sh)
方式:
一、fork
此种方式shell中的子命令不会影响父级命令,子级的环境变量不会影响父级
命令:./directory/script.sh
二、exec
此种方式shell中的子命令执行完后不再执行父命令
命令:exec /directory/script.sh
三、source
执行shell的子级命令后继续执行父级命令,同时子级命令设置的环境变量会营销到父级的环境变量
命令::source directory/script.sh或. directory/script.sh(点加空格加脚本目录)
特殊:在一个shell脚本中调用另个shell脚本
在脚本a中添加语句:cd /root/scripts && ./run.sh
(说明:在脚本a.sh中执行脚本run.sh,其中/root/scripts指脚本run.sh的目录)
七、将文件或目录拷贝到远程Linux系统中
方式一:使用scp命令
1、将远程Linux系统上的某个文件或者目录拷贝到本地Linux系统上来
命令:scp 远程用户名@IP地址:文件的绝对路径 本地Linux系统路径
eg:scp -P 22 A.gzroot@172.17.10.71:/etc/swift/B.gz 将机器A的A.gz文件拷贝到机器B的B.gz文件
(-P 指机器B的shell端口;root为机器B的用户名;172.17.10.71为机器B的IP;/etc/swift/B.gz为目标文件器及文件名)
2、将本地的某个文件或者目录拷贝到远程Linux系统的某个路径下
命令:scp 本地Linux系统文件路径 远程用户名@IP地址:远程系统文件绝对路径名
3、安装Xshell
输入命令: sz 文件名
方式二:使用Xshell
将本地文件上传到远程Linux系统中
方法:1、安装Xshell;2、新建到远程Linux系统的ssh连接,并切换到目标目录下;3、点击新建文件传输图标4、输入put;5、选择要上传的文件
3、将远程Linux机器A的文件拷贝到远程Linux机器B上
命令:scp -r 目标文件目录/文件夹名 机器B的IP:/目标路径
scp -r /lin/works/app/ger 172.18.4.241:/home/htest
八、使用命令行工具向shell脚本传参
1、shell脚本中表示参数:$0为程序名称,$1为第一个参数,$2为第二个参数,依次类推,$9为第九个参数,${10}为第十个参数...
2、执行shell脚本:./myshell.sh 第一个参数 第二个参数 ...
另外,特殊变量$#表示执行脚本时包含的命令行参数个数。脚本中任何位置都可以使用$#(如:if [ $# –ne 2 ] 即可测试参数个数)
九、进程管理
iftop -i eth0 -B 查看网络流量
ps -ef|grep java 查看Java进程
ps -ef|grep tomcat 查看Tomcat进程
ps -ef|grep postgres 查看当前与PostgreSQL数据库相连的进程
kill 进程编号 杀死进程
ps aux|grep keepalived 查看当前Keepalived进程
十、后台运行java程序
将进程移至后台运行(nohup、tail)
nohup java 文件名 &
cat nohup.out 查看最终运行结果
tail -f nohup.out 查看当前运行结果
十一、查看文件
ls -lht 查看当前目录下所有文件大小
ls -al 查看当前目录下所有文件属性
十二、查看网络信息
ip a 查看网络实际IP及虚IP等信息
netstat -anp|grep 8080 查看8080端口的网络连接信息