光标快捷键
Home或Ctrl+A
:快速移动光标至行首
End或Ctrl+E
:快速移动光标至行尾
Ctrl+K
:从光标处开始删除,直到行尾
Linux系统信息查询
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188
| uname -a head -n 1 /etc/issue cat /proc/cpuinfo hostname lspci -tv lsusb -tv lsmod env free -m df -h du -sh <目录名> grep MemTotal /proc/meminfo grep MemFree /proc/meminfo uptime cat /proc/loadavg mount | column -t fdisk -l swapon -s hdparm -i /dev/hda dmesg | grep IDE ifconfig iptables -L route -n netstat -lntp netstat -antp netstat -s ps -ef top w id <用户名> last cut -d: -f1 /etc/passwd cut -d: -f1 /etc/group crontab -l chkconfig –list chkconfig –list | grep on
rpm -qa
>>> cat /proc/uptime <<< 5113396.94 575949.85
# 第一数字即是系统已运行的时间5113396.94秒,运用系统工具date即可算出系统启动时间
>>> date -d "$(awk -F. '{print $1}' /proc/uptime) second ago" +"%Y-%m-%d %H:%M:%S"
<<< 2018-01-02 06:50:52
查看/proc/uptime文件计算系统运行时间
>>> cat /proc/uptime| awk -F. '{run_days=$1 / 86400;run_hour=($1 % 86400)/3600;run_minute=($1 % 3600)/60;run_second=$1 % 60;printf("系统已运行:%d天%d时%d分%d秒",run_days,run_hour,run_minute,run_second)}'
<<< 系统已运行:1天1时36分13秒
# Linux查看物理CPU个数、核数、逻辑CPU个数 # 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
# 查看物理CPU个数 >>> cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l <<< 2
# 查看每个物理CPU中core的个数(即核数) >>> cat /proc/cpuinfo| grep "cpu cores"| uniq <<< cpu cores : 2
# 查看逻辑CPU的个数 cat /proc/cpuinfo| grep "processor"| wc -l
# 查看CPU信息(型号) cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 4 Intel(R) Core(TM) i5-6500 CPU @ 3.20GHz
输入命令cat /proc/cpuinfo 查看physical id有几个就有几个物理cpu;查看processor有几个就有几个逻辑cpu。 (一)概念 ① 物理CPU 实际Server中插槽上的CPU个数 物理cpu数量,可以数不重复的physical id有几个 ② 逻辑CPU /proc/cpuinfo用来存储cpu硬件信息的 信息内容分别列出了processor 0 –processor n 的规格。这里需要注意,n+1是逻辑cpu数 一般情况,我们认为一颗cpu可以有多核,加上intel的超线程技术(HT), 可以在逻辑上再分一倍数量的cpu core出来 逻辑CPU数量=物理cpu数量 x cpu cores 这个规格值 x 2(如果支持并开启ht) 备注一下:Linux下top查看的CPU也是逻辑CPU个数 ③ CPU核数 一块CPU上面能处理数据的芯片组的数量、比如现在的i5 760,是双核心四线程的CPU、而 i5 2250 是四核心四线程的CPU 一般来说,物理CPU个数×每颗核数就应该等于逻辑CPU的个数,如果不相等的话,则表示服务器的CPU支持超线程技术
lscpu命令,查看的是cpu的统计信息
内存
概要查看内存情况 free -m 详细情况:cat /proc/meminfo
查看硬盘和分区分布: lsblk
如果要看硬盘和分区的详细信息:fdisk -l
使用“df -k”命令,以KB为单位显示磁盘使用量和占用率,-m则是以M为单位显示磁盘使用量和占用率
网卡
查看网卡硬件信息 # lspci | grep -i 'eth' 02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 06)
查看系统的所有网络接口:ifconfig -a
如果要查看某个网络接口的详细信息,例如eth0的详细参数和指标:ethtool eth0
查看pci信息,即主板所有硬件槽信息:lspci
如果要更详细的信息:lspci -v 或者 lspci -vv
如果要看设备树:lspci -t
Linux /proc目录详解
# 1. /proc目录 # Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。 用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。下面列出的这些文件或子文件夹,并不是都是在你的系统中存在,这取决于你的内核配置和装载的模块。另外,在/proc下还有三个很重要的目录:net,scsi和sys。 Sys目录是可写的,可以通过它来访问或修改内核的参数,而net和scsi则依赖于内核配置。例如,如果系统不支持scsi,则scsi 目录不存在。 除了以上介绍的这些,还有的是一些以数字命名的目录,它们是进程目录。系统中当前运行的每一个进程都有对应的一个目录在/proc下,以进程的 PID号为目录名,它们是读取进程信息的接口。而self目录则是读取进程本身的信息接口,是一个link。
# 2. 子文件或子文件夹 /proc/buddyinfo 每个内存区中的每个order有多少块可用,和内存碎片问题有关 /proc/cmdline 启动时传递给kernel的参数信息 /proc/cpuinfo cpu的信息 /proc/crypto 内核使用的所有已安装的加密密码及细节 /proc/devices 已经加载的设备并分类 /proc/dma 已注册使用的ISA DMA频道列表 /proc/execdomains Linux内核当前支持的execution domains /proc/fb 帧缓冲设备列表,包括数量和控制它的驱动 /proc/filesystems 内核当前支持的文件系统类型 /proc/interrupts x86架构中的每个IRQ中断数 /proc/iomem 每个物理设备当前在系统内存中的映射 /proc/ioports 一个设备的输入输出所使用的注册端口范围 /proc/kcore 代表系统的物理内存,存储为核心文件格式,里边显示的是字节数,等于RAM大小加上4kb /proc/kmsg 记录内核生成的信息,可以通过/sbin/klogd或/bin/dmesg来处理 /proc/loadavg 根据过去一段时间内CPU和IO的状态得出的负载状态,与uptime命令有关 /proc/locks 内核锁住的文件列表 /proc/mdstat 多硬盘,RAID配置信息(md=multiple disks) /proc/meminfo RAM使用的相关信息 /proc/misc 其他的主要设备(设备号为10)上注册的驱动 /proc/modules 所有加载到内核的模块列表 /proc/mounts 系统中使用的所有挂载 /proc/mtrr 系统使用的Memory Type Range Registers (MTRRs) /proc/partitions 分区中的块分配信息 /proc/pci 系统中的PCI设备列表 /proc/slabinfo 系统中所有活动的 slab 缓存信息 /proc/stat 所有的CPU活动信息 /proc/sysrq-trigger 使用echo命令来写这个文件的时候,远程root用户可以执行大多数的系统请求关键命令,就好像在本地终端执行一样。要写入这个文件,需要把/proc/sys/kernel/sysrq不能设置为0。这个文件对root也是不可读的 /proc/uptime 系统已经运行了多久 /proc/swaps 交换空间的使用情况 /proc/version Linux内核版本和gcc版本 /proc/bus 系统总线(Bus)信息,例如pci/usb等 /proc/driver 驱动信息 /proc/fs 文件系统信息 /proc/ide ide设备信息 /proc/irq 中断请求设备信息 /proc/net 网卡设备信息 /proc/scsi scsi设备信息 /proc/tty tty设备信息 /proc/net/dev 显示网络适配器及统计信息 /proc/vmstat 虚拟内存统计信息 /proc/vmcore 内核panic时的内存映像 /proc/diskstats 取得磁盘信息 /proc/schedstat kernel调度器的统计信息 /proc/zoneinfo 显示内存空间的统计信息,对分析虚拟内存行为很有用
# 以下是/proc目录中进程N的信息 /proc/N pid为N的进程信息 /proc/N/cmdline 进程启动命令 /proc/N/cwd 链接到进程当前工作目录 /proc/N/environ 进程环境变量列表 /proc/N/exe 链接到进程的执行命令文件 /proc/N/fd 包含进程相关的所有的文件描述符 /proc/N/maps 与进程相关的内存映射信息 /proc/N/mem 指代进程持有的内存,不可读 /proc/N/root 链接到进程的根目录 /proc/N/stat 进程的状态 /proc/N/statm 进程使用的内存的状态 /proc/N/status 进程状态信息,比stat/statm更具可读性 /proc/self 链接到当前正在运行的进程
|
文件命令
1 2 3
| tree . tree /f tree /a
|
关机/重启
序号 |
命令 |
对应英文 |
作用 |
01 |
shutdown 选项 时间 |
shutdown |
关机/重新启动 |
- 不指定选项和参数,默认表示 1 分钟之后 关闭电脑
- 远程维护服务器时,最好不要关闭系统,而应该重新启动系统
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| $ shutdown -r now
$ shutdown now
$ shutdown 20:25
$ shutdown +10
$ shutdown -c
|
查看或配置网卡信息
序号 |
命令 |
对应英文 |
作用 |
01 |
ifconfig |
configure a network interface |
查看/配置计算机当前的网卡配置信息 |
02 |
ping ip地址 |
ping |
检测到目标 ip地址 的连接是否正常 |
网卡 和 IP 地址
网卡
- 网卡是一个专门负责网络通讯的硬件设备
- IP 地址是设置在网卡上的地址信息
我们可以把 电脑 比作 电话,网卡 相当于 SIM 卡,IP 地址 相当于 电话号码
IP 地址
- 每台联网的电脑上都有 IP 地址,是保证电脑之间正常通讯的重要设置
注意:每台电脑的 IP 地址不能相同,否则会出现 IP 地址冲突,并且没有办法正常通讯
提示:有关 IP 地址的详细内容,在就业班会详细讲解!
ifconfig
ifconfig
可以查看/配置计算机当前的网卡配置信息
1 2 3 4 5
| $ ifconfig
$ ifconfig | grep inet
|
提示:一台计算机中有可能会有一个 物理网卡 和 多个虚拟网卡,在 Linux 中物理网卡的名字通常以 ensXX
表示
127.0.0.1
被称为 本地回环/环回地址,一般用来测试本机网卡是否正常
ping
1 2 3 4 5
| $ ping IP地址
$ ping 127.0.0.1
|
ping
一般用于检测当前计算机到目标计算机之间的网络 是否通畅,数值越大,速度越慢
ping
的工作原理与潜水艇的声纳相似,ping
这个命令就是取自 声纳的声音
- 网络管理员之间也常将
ping
用作动词 —— ping 一下计算机X,看他是否开着
原理:网络上的机器都有 唯一确定的 IP 地址,我们给目标 IP 地址发送一个数据包,对方就要返回一个数据包,根据返回的数据包以及时间,我们可以确定目标主机的存在
提示:在 Linux 中,想要终止一个终端程序的执行,绝大多数都可以使用 CTRL + C
远程登录和复制文件
序号 |
命令 |
对应英文 |
作用 |
01 |
ssh 用户名@ip |
secure shell |
关机/重新启动 |
02 |
scp 用户名@ip:文件名或路径 用户名@ip:文件名或路径 |
secure copy |
远程复制文件 |
ssh
基础(重点)
在 Linux 中 SSH 是 非常常用 的工具,通过 SSH 客户端 我们可以连接到运行了 SSH 服务器 的远程机器上
- SSH 客户端是一种使用
Secure Shell(SSH)
协议连接到远程计算机的软件程序
SSH
是目前较可靠,专为远程登录会话和其他网络服务 提供安全性的协议
- 利用
SSH 协议
可以有效防止远程管理过程中的信息泄露
- 通过
SSH 协议
可以对所有传输的数据进行加密,也能够防止 DNS 欺骗和 IP 欺骗
SSH
的另一项优点是传输的数据可以是经过压缩的,所以可以加快传输的速度
域名 和 端口号
域名
- 由一串 用点分隔 的名字组成,例如:
www.itcast.cn
- 是 IP 地址 的别名,方便用户记忆
端口号
序号 |
服务 |
端口号 |
01 |
SSH 服务器 |
22 |
02 |
Web 服务器 |
80 |
03 |
HTTPS |
443 |
04 |
FTP 服务器 |
21 |
提示:有关 端口号的详细内容,在就业班会详细讲解!
SSH 客户端的简单使用
1
| ssh [-p port] user@remote
|
user
是在远程机器上的用户名,如果不指定的话默认为当前用户
remote
是远程机器的地址,可以是 IP/域名,或者是 后面会提到的别名
port
是 SSH Server 监听的端口,如果不指定,就为默认值 22
提示:
注意:
ssh
这个终端命令只能在 Linux
或者 UNIX
系统下使用
- 如果在
Windows
系统中,可以安装 PuTTY
或者 XShell
客户端软件即可
提示:
- 在工作中,SSH 服务器的端口号很有可能不是 22,如果遇到这种情况就需要使用
-p
选项,指定正确的端口号,否则无法正常连接到服务器
Windows 下 SSH 客户端的安装
scp
(掌握)
- scp 就是
secure copy
,是一个在 Linux 下用来进行 远程拷贝文件 的命令
- 它的地址格式与 ssh 基本相同,需要注意的是,在指定端口时用的是大写的
-P
而不是小写的
1 2 3 4 5 6 7 8 9 10 11 12 13
|
scp -P port 01.py user@remote:Desktop/01.py
scp -P port user@remote:Desktop/01.py 01.py
scp -r demo user@remote:Desktop
scp -r user@remote:Desktop demo
|
选项 |
含义 |
-r |
若给出的源文件是目录文件,则 scp 将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名 |
-P |
若远程 SSH 服务器的端口不是 22,需要使用大写字母 -P 选项指定端口 |
注意:
scp
这个终端命令只能在 Linux
或者 UNIX
系统下使用
- 如果在
Windows
系统中,可以安装 PuTTY
,使用 pscp
命令行工具或者安装 FileZilla
使用 FTP
进行文件传输
FileZilla
SSH 高级(知道)
提示:有关 SSH 配置信息都保存在用户家目录下的 .ssh
目录下
免密码登录
步骤
- 配置公钥
- 执行
ssh-keygen
即可生成 SSH 钥匙,一路回车即可
- 上传公钥到服务器
- 执行
ssh-copy-id -p port user@remote
,可以让远程服务器记住我们的公钥
示意图
非对称加密算法
- 使用 公钥 加密的数据,需要使用 私钥 解密
- 使用 私钥 加密的数据,需要使用 公钥 解密
配置别名
每次都输入 ssh -p port user@remote
,时间久了会觉得很麻烦,特别是当 user
, remote
和 port
都得输入,而且还不好记忆
而 配置别名 可以让我们进一步偷懒,譬如用:ssh mac
来替代上面这么一长串,那么就在 ~/.ssh/config
里面追加以下内容:
1 2 3 4
| Host mac HostName ip地址 User itheima Port 22
|
保存之后,即可用 ssh mac
实现远程登录了,scp
同样可以使用
终端前缀修改目标:
原本的提示信息是:路径
目标:修改终端提示信息为:这是我的终端
打开.bash_profile
文件
编辑.bash_profile
文件
点击i
,左下角出现-- INSERT --
后,可以正常输入内容。
在文件内输入以下内容:
保存内容
输入完成后,点击键盘左上角Esc
,左下角-- INSERT --
消失后,输入:wq
回车即可保存。
更新配置
在终端输入以下命令更新配置
1
| source $HOME/.bash_profile
|
补充
符号所代表的意义
1 2 3 4 5 6 7 8 9 10 11
| \d : '代表日期 \H : '完整的主机名称 \h : '仅取主机的第一个名字 \t : '显示时间为24小时格式,如:HH:MM:SS \T : '显示时间为12小时格式 \A : '显示时间为24小时格式:HH:MM \u : '用户名 \v : 'BASH的版本信息 \w : '完整的工作目录名称 \W : '列出最后一个目录 \$ : '提示字符,如果是root时,提示符为:# ,普通用户则为:$
|
自定义效果
1 2 3 4 5 6 7 8
| "只对当前用户生效,就修改~/.bashrc;如果想要所有用户生效,就修改/etc/profile" [root@VM-0-16-centos ~]# vim ~/.bashrc export PS1='\h:\w \$ ' [root@VM-0-16-centos ~]# source ~/.bashrc VM-0-16-centos:~ "这里吧前后的[]方括号去除了,就变成了suse的风格了" "显示完整目录有一个缺点,就是进入的目录层级越深,前缀就越长,根据个人喜好来就行"
|
添加颜色
1 2 3 4 5 6 7 8 9
| VM-0-16-centos:~ export PS1='\[\e[0;31m\]\h:\w \$ \[\e[0m\]' VM-0-16-centos:~ "有那么点suse的味道了"
"如果你喜欢绿色,他也会原谅你的哟" VM-0-16-centos:~ export PS1='\[\e[1;32m\]\h:\w \$ \[\e[0m\]' VM-0-16-centos:~
|
五颜六色
1 2 3 4 5
| "甚至还可以交通灯" VM-0-16-centos:~ export PS1='\[\e[1;31m\]\d-\[\e[0m\]\[\e[1;33m\]\h\[\e[0m\]\[\e[1;32m\]:\w \$ \[\e[0m\]' VM-0-16-centos:~
|
将前缀改为实时目录
1 2
| PS1='[`pwd`]\$' export PS1
|