- 快速上手
- 基本指令
- 线上查询及帮助命令(2个)
- 文件和目录操作命令(18个)
- 查看文件及处理命令(21个)
- 文件压缩及解压缩命令(4个)
- 信息显示命令(11个)
- 搜索文件命令(4个)
- 用户管理命令(10个)
- 基础网络操作命令(11个)
- 深入网络操作命令(9个)
- 有关磁盘与文件系统的命令(16个)
- 系统权限以及用户授权相关命令(4个)
- 查看系统用户登陆信息的命令(7个)
- 内置命令及其它(19个)
- 系统管理与性能监视命令(9个)
- 关机/重启/注销和查看系统信息的命令(6个)
- 进程管理相关命令
- vim下常用快捷键
- yum安装与rpm安装的区别
- systemctl与service
- 重启系统
- 关闭系统,切断电源
- CPU停止工作
- 暂停系统
- 让系统进入冬眠状态
- 让系统进入交互式休眠状态
- 启动进入救援状态(单用户状态)
- 显示当前主机的信息
- 设置主机名。
- 显示当前主机的信息
- 设置主机名。
- Linux 内核 与 发行版本
快速上手
查看当前位置 pwd
查看网络设备信息 ifconfig
查看服务器下的可用内存 free -h
查看磁盘空间是否足够 df -lh
新建code目录 mkdir code
cd命令切换至该目录 cd code/
安装 git sudo yum install git
生成公钥 ssh-keygen -t rsa -C “2972194799@qq.com”
查看生成的公钥 cat ~/.ssh/id_rsa.pub
添加到gitee里
克隆
查看项目占用空间 du -sh
查看电脑版本 uname -a
安装 java8 yum install java-1.8.0-openjdk -y
查看java版本 java -version
查看java位置 which java
获取并下载 maven wget https://dlcdn.apache.org/maven/maven-3/3.8.3/binaries/apache-maven-3.8.3-bin.tar.gz
解压 maven tar -zxvf
忘记了构建命令,查看mvn可执行命令,./apache-maven-3.8.3/bin/mvn —help
构建maven项目 ./apache-maven-3.8.3/bin/mvn install
cp命令把target下的jar包复制到外面 cp ./target/HelloGitee-1.0-SNAPSHOT.jar ./
mv命令,更改名字 mv HelloGitee-1.0-SNAPSHOT.jar he.jar
jobs 查看是否有任务在跑
nohup 后台运行
curl命令访问端口
top命令,查看进程
每次执行都要输入这么多命令,我们自己写一个脚本
1 创建脚本start.sh
2 编写脚本
3 运行start.sh,发现没有权限
4 添加权限,start.sh变成绿色就可以执行啦
5 执行成功!返回success
history查看之前输入过的所有命令
基本指令
tar
选项
-c将输出写到标准输出上,并保留原有文件。
-x:释放归档
-f:指定归档文件名称
-z、-j、-J:调用 .gz、.bz2、.xz格式的工具进行处理
-t:显示归档中的文件清单
-C:指定释放路径
-P: 以绝对路径打包
]$ tar -acPf cg.tar.gz /home/cg/cin/etc/*
]$ tar -xvf cg.tar.gz -C /
打包格式:
tar 选项 /路径/压缩包名字 被压缩的数据
解包格式:
tar 选项 /路径/压缩包的名字 选项 释放的路径
crontab
* * * * * # 分时日月周
30 8 * * * #每天早上8:30执行
30 23 * * * #每天晚上11:30执行
30 23 * * 5 #每周的周五晚上11:30执行
30 23 1 * 5 #每周的周五或每月1号晚上11:30执行
30 23 * * 1-5 #每周的周一至周五晚上11:30执行
30 23 * * 1,3,7 #每周的周一 周三 周日晚上11:30执行
0 */2 * * * #每隔两个小时
*:匹配范围内任意时间
,:分隔多个不连续的时间点
-:指定连续时间范围
/n:指定时间频率,每n ..
watch
每一秒钟执行某条命令
watch -n 1 uptime
nohup
nohup command >X.file 2 >&1 &
等价于
nohup command &>X.file &
其中1表示标准输出。2表示文件标准错误输出。2>1&即将两者合并,合并的位置就是X.file.
nc
这里nc特别适合用于udp协议端口
nc -vzu ip 端口 //检测udp端口网络连通性
nc -ul 端口 // -l 使用监听模式 -u 使用UDP传输协议 server端
nc -u ip 端口 // 客户端
线上查询及帮助命令(2个)
man:查看命令帮助,命令的词典,更复杂的还有info,但不常用。
help:查看Linux内置命令的帮助,比如cd命令。
文件和目录操作命令(18个)
ls:全拼list,功能是列出目录的内容及其内容属性信息。
cd:全拼change directory,功能是从当前工作目录切换到指定的工作目录。
cp:全拼copy,其功能为复制文件或目录。
find:查找的意思,用于查找目录及目录下的文件。
mkdir:全拼make directories,其功能是创建目录。
mv:全拼move,其功能是移动或重命名文件。
pwd:全拼print working directory,其功能是显示当前工作目录的绝对路径。
rename:用于重命名文件。
rm:全拼remove,其功能是删除一个或多个文件或目录。
rmdir:全拼remove empty directories,功能是删除空目录。
touch:创建新的空文件,改变已有文件的时间戳属性。
tree:功能是以树形结构显示目录下的内容。
basename:显示文件名或目录名。
dirname:显示文件或目录路径。
chattr:改变文件的扩展属性。
lsattr:查看文件扩展属性。
file:显示文件的类型。
md5sum:计算和校验文件的MD5值。
查看文件及处理命令(21个)
cat:全拼concatenate,功能是用于连接多个文件并且打印到屏幕输出或重定向到指定文件中。
tac:是cat的反向拼写,因此命令的功能为反向显示文件内容
more:分页显示文件内容。
less:分页显示文件内容,more命令的相反用法。
head:显示文件内容的头部。
tail:显示文件内容的尾部。
cut:将文件的每一行按指定分隔符分割并输出。
split:分割文件为不同的小片段。
paste:按行合并文件内容。
sort:对文件的文本内容排序。
uniq:去除重复行。
wc:统计文件的行数、单词数或字节数。
iconv:转换文件的编码格式。
dos2unix:将DOS格式文件转换成UNIX格式。
diff:全拼difference,比较文件的差异,常用于文本文件。
vimdiff:命令行可视化文件比较工具,常用于文本文件。
rev:反向输出文件内容。
grep/egrep:过滤字符串,三剑客老三。
join:按两个文件的相同字段合并。
tr:替换或删除字符。
vi/vim:命令行文本编辑器。
文件压缩及解压缩命令(4个)
tar:打包压缩。oldboy
unzip:解压文件。
gzip:压缩工具。
zip:压缩工具。
信息显示命令(11个)
uname:显示操作系统相关信息的命令。
hosthome:显示或者设置当前系统的主机名。
dmesg:显示开机信息,用于诊断系统故障。
uptime:显示系统运行时间及负载。
stat:显示文件或文件系统的状态。
du:计算磁盘空间使用情况。
df:报告文件系统磁盘空间的使用情况。
top:实时显示系统资源使用情况。
free:查看系统内存。
date:显示与设置系统时间。
cal:查看日历等时间信息。
搜索文件命令(4个)
which:查找二进制命令,按环境变量PATH路径查找。
find:从磁盘遍历查找文件或目录。
whereis:查找二进制命令,按环境变量PATH路径查找。
locate:从数据库 (/var/lib/mlocate/mlocate.db) 查找命令,使用updatedb更新库。
用户管理命令(10个)
useradd:添加用户。
usermod:修改系统已经存在的用户属性。
userdel:删除用户。
groupadd:添加用户组。
passwd:修改用户密码。
chage:修改用户密码有效期限。
id:查看用户的uid,gid及归属的用户组。
su:切换用户身份。
visudo:编辑/etc/sudoers文件的专属命令。
sudo:以另外一个用户身份(默认root用户)执行事先在sudoers文件允许的命令。
基础网络操作命令(11个)
telnet:使用TELNET协议远程登录。
ssh:使用SSH加密协议远程登录。
scp:全拼secure copy,用于不同主机之间复制文件。
wget:命令行下载文件。
ping:测试主机之间网络的连通性。
route:显示和设置linux系统的路由表。
ifconfig:查看、配置、启用或禁用网络接口的命令。
ifup:启动网卡。
ifdown:关闭网卡。
netstat:查看网络状态。
ss:查看网络状态。
深入网络操作命令(9个)
nmap:网络扫描命令。
lsof:全名list open files,也就是列举系统中已经被打开的文件。
mail:发送和接收邮件。
mutt:邮件管理命令。
nslookup:交互式查询互联网DNS服务器的命令。
dig:查找DNS解析过程。
host:查询DNS的命令。
traceroute:追踪数据传输路由状况。
tcpdump:命令行的抓包工具。
有关磁盘与文件系统的命令(16个)
mount:挂载文件系统。
umount:卸载文件系统。
fsck:检查并修复Linux文件系统。
dd:转换或复制文件。
dumpe2fs:导出ext2/ext3/ext4文件系统信息。
dumpe:xt2/3/4文件系统备份工具。
fdisk:磁盘分区命令,适用于2TB以下磁盘分区。
parted:磁盘分区命令,没有磁盘大小限制,常用于2TB以下磁盘分区。
mkfs:格式化创建Linux文件系统。
partprobe:更新内核的硬盘分区表信息。
e2fsck:检查ext2/ext3/ext4类型文件系统。
mkswap:创建Linux交换分区。
swapon:启用交换分区。
swapoff:关闭交换分区。
sync:将内存缓冲区内的数据写入磁盘。
resize2fs:调整ext2/ext3/ext4文件系统大小。
系统权限以及用户授权相关命令(4个)
chmod:改变文件或目录权限。
chown:改变文件或目录的属主和属组。
chgrp:更改文件用户组。
umask:显示或设置权限掩码。
查看系统用户登陆信息的命令(7个)
whoami:显示当前有效的用户名称,相当于执行id -un命令。
who:显示目前登录系统的用户信息。
w:显示已经登陆系统的用户列表,并显示用户正在执行的指令。
last:显示登入系统的用户。
lastlog:显示系统中所有用户最近一次登录信息。
users:显示当前登录系统的所有用户的用户列表。
finger:查找并显示用户信息。
内置命令及其它(19个)
echo:打印变量,或直接输出指定的字符串
printf:将结果格式化输出到标准输出。
rpm:管理rpm包的命令。
yum:自动化简单化地管理rpm包的命令。
watch:周期性的执行给定的命令,并将命令的输出以全屏方式显示。
alias:设置系统别名。
unalias:取消系统别名。
date:查看或设置系统时间。
clear:清除屏幕,简称清屏。
history:查看命令执行的历史纪录。
eject:弹出光驱。
time:计算命令执行时间。
nc:功能强大的网络工具。
xargs:将标准输入转换成命令行参数。
exec:调用并执行指令的命令。
export:设置或者显示环境变量。
unset:删除变量或函数。
type:用于判断另外一个命令是否是内置命令。
bc:命令行科学计算器。
系统管理与性能监视命令(9个)
chkconfig:管理Linux系统开机启动项。
vmstat:虚拟内存统计。
mpstat:显示各个可用CPU的状态统计。
iostat:统计系统IO。
sar:全面地获取系统的CPU、运行队列、磁盘 I/O、分页(交换区)、内存、 CPU中断和网络等性能数据。
ipcs:用于报告Linux中进程间通信设施的状态,显示的信息包括消息列表、共享内存和信号量的信息。
ipcrm:用来删除一个或更多的消息队列、信号量集或者共享内存标识。
strace:用于诊断、调试Linux用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。
ltrace:命令会跟踪进程的库函数调用,它会显现出哪个库函数被调用。
关机/重启/注销和查看系统信息的命令(6个)
shutdown:关机。
halt:关机。
poweroff:关闭电源。
logout:退出当前登录的Shell。
exit:退出当前登录的Shell。
Ctrl+d:退出当前登录的Shell的快捷键。
进程管理相关命令
bg:将一个在后台暂停的命令,变成继续执行 (在后台执行)。
fg:将后台中的命令调至前台继续运行。
jobs:查看当前有多少在后台运行的命令。
kill:终止进程。
killall:通过进程名终止进程。
pkill:通过进程名终止进程。
crontab:定时任务命令。
ps:显示进程的快照。
pstree:树形显示进程。
nice/renice:调整程序运行的优先级。
nohup:忽略挂起信号运行指定的命令。
pgrep:查找匹配条件的进程。
runlevel:查看系统当前运行级别。
init:切换运行级别。
service:启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。
vim下常用快捷键
一般模式可用的按钮说明
移动光标
【h、j、k、l】,分别控制光标左、下、上、右移一格
按【ctrl+b】屏幕往”后”移动一页
按【ctrl+f】屏幕往”前”移动一页
【n
【Home】移动到这一行的最前面字符处:0数字,但不能用数字小键盘上的数字
【End】 移动到这一行的最后面字符处:$,我测试好像不行
【w】光标跳到下个字的开头
【e】光标跳到下个字的字尾
【H】 光标移动到这个屏幕的最上方那一行的第一个字符
【M】 光标移动到这个屏幕的中间那一行的第一个字符
【L】光标移动到这个屏幕的最下方那一行的第一个字符
【G】 移动到这个文件的最后一行
【nG】移动到这个文件的第n行(可配合:set nu)
【gg】 移动到这个文件的第一行,相当于1G
【n
查找与替换
【/word】 向光标向下寻找一个名称为word的字符串
【?word】 向光标向上寻找一个名称为word的字符串
【n】 代表重复前一个查找的动作
【N】 与n刚好相反,为【反向】进行行前一个查找动作
【:n1,n2s/word1/word2/g】 n1与n2为数字,在第n1与n2行之间查找word1 这个字符串,并将该字符串替换为word2
【:1,$s/word1/word2/g】 从第一行到最后一行查找word1字符串,并将该字符串替换为word2
【:1,$s/word1/word2/gc】 从第一行到最后一行查找word1字符串,并将该字符串替换为word2 ,且在替换前提示用户确认是否进行替换
删除、复制与粘贴
【x】 为向后删除一个字符 (相当于【del】键)
【X】 为向前删除一个字符(相当于【backspace】键)
【nx】 连续向后删除n个字符
【dd】 删除光标所在行
【ndd】 删除光标所在的向下n行
【d1G】 删除光标所在行到第一行的所有数据
【dG】 删除光标所在到最后一行的所有数据
【d$】 删除光标所在处,到该行的最后一个字符
【d0】 删除光标所在处,到该行的最前一个字符
【yy】 复制光标所在的那一行
【nyy】 复制光标所在的向下n列
【y1G】 复制光标所在行到第一行的所有数据
【yG】 复制光标所在行到最后一行的所有数据
【y0】 复制光标所在的那个字符到该行行首的所有数据
【y$】 复制光标所在的那个字符到该行行尾的所有数据
【p】将已复制的数据在光标下一行粘贴上
【P】 则为贴在光标的上一行
【u】 恢复前一个操作
【Ctrl+r】重做上一个操作
【.】 是重复前一个操作
yum安装与rpm安装的区别
主要的区别在于
rpm :只能安装已经下载到本地机器上的rpm包,无法解决软件包的依赖关系。 yum:在线下载并安装rpm包,能更新系统,能自动处理包与包之间的依赖问题。
yum
- YUM被称为 Yellow dog Updater, Modified,是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。YUM使用Python语言写成。YUM客户端基于RPM包进行管理,可以通过HTTP服务器下载、FTP服务器下载、本地软件池的等方式获得软件包,可以从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系。
- YUM在安装RPM时,会从服务器下载相应包,且缓存在本地。
- 使用YUM进行RPM包的管理,非常简单方便。
rpm
- RPM管理支持事务机制。增强了程序安装卸载的管理
- RPM的功能: 打包、安装、查询、升级、卸载、校验、数据库管理。
- RPM的缺点: 由于Linux中的程序大多是小程序。程序与程序之间存在非常复杂的依赖关系。RPM无法解决软件包的依赖关系。
- RPM包 用RPM工具可以将二进制程序进行打包,包被称为RPM包。RPM包并不是跨平台的
systemctl与service
相比于 service,systemctl 的命令要更丰富一些,service 命令是Redhat Linux兼容的发行版中用来控制系统服务的使用工具,它有启动,停止,重新启动和关闭系统服务的功能,还可以显示所有系统服务的当前装态。
systemctl 的 Unit 放在目录 /usr/lib/systemd/system(Centos) 或者 /etc/systemd/system(Ubuntu)
service(选项)(参数) service network status service network restart
参数名字:
- 服务名:自动要控制的服务名,即/etc/init.d 目录下的脚本文件名
- 控制命令:系统服务脚本支持的控制命令
但是 service 也存在一些问题:
- 启动时间长,init进程是串行启动,只有当前一个进程启动完,才会启动下一个进程
- 启动脚本复杂,init进程只是执行启动脚本,不管其他事情,脚本需要自己处理各种情况,这往往使脚本变得很长
systemctl命令
Systemd 就是为了解决这些问题而诞生的。他的设计目标是,为系统的启动和管理提供一套完整的解决方案。根据linux惯例,字母d是守护进程 daemon 的缩写。systemd 这个名字的含义,就是他要守护整个系统。systemd并不是一个命令,而是一组命令,涉及到系统管理的方方面面系统命令
```java重启系统
$ sudo systemctl reboot
关闭系统,切断电源
$ sudo systemctl poweroff
CPU停止工作
$ sudo systemctl halt
暂停系统
$ sudo systemctl suspend
让系统进入冬眠状态
$ sudo systemctl hibernate
让系统进入交互式休眠状态
$ sudo systemctl hybrid-sleep
启动进入救援状态(单用户状态)
$ sudo systemctl rescue
显示当前主机的信息
$ hostnamectl
设置主机名。
$ sudo hostnamectl set-hostname rhel7
显示当前主机的信息
$ hostnamectl
设置主机名。
$ sudo hostnamectl set-hostname rhel7
<a name="XngZG"></a>
### 服务命令
```java
# 立即启动一个服务
$ sudo systemctl start apache.service
# 立即停止一个服务
$ sudo systemctl stop apache.service
# 重启一个服务
$ sudo systemctl restart apache.service
# 设置开机自启动
systemctl enable nfs-server.service
# 停止开机自启动
systemctl disable nfs-server.service
# 杀死一个服务的所有子进程
$ sudo systemctl kill apache.service
# 重新加载一个服务的配置文件
$ sudo systemctl reload apache.service
# 重载所有修改过的配置文件
$ sudo systemctl daemon-reload
# 显示某个 Unit 的所有底层参数
$ systemctl show httpd.service
# 显示某个 Unit 的指定属性的值
$ systemctl show -p CPUShares httpd.service
# 设置某个 Unit 的指定属性
$ sudo systemctl set-property httpd.service CPUShares=500
配置文件状态
# 列出所有配置文件
$ systemctl list-unit-files
# 列出指定类型的配置文件
$ systemctl list-unit-files --type=service
Linux 内核 与 发行版本
内核版本
- 内核是系统的心脏,是运行程序和管理像磁盘机和打印机等硬件设备的核心程序,提供了一个在裸设备与应用程序的抽象层,例如,程序不需要了解用户的主板芯片集或者磁盘控制器的细节就能在高层次上读写磁盘。
- 内核的开发和规范一直是由Linus领导的开发小组控制着,版本也是惟一的。开发小组每隔一段时间公布新的版本或其修订版,从1991年10月Linus向世界公开发布的内核0.0.2版本(0.0.1版本功能相当简陋所以没有公开发布)到目前最新的内核2.6.22版本,Linux的功能越来越强大。
- Linux内核的版本号命名是有一定规则的,版本号的格式通常为“主版本号.次版本号.修正号”。主版本号和次版本号标志着重要的功能变动,修正号表示较小的功能变更。以2.6.22版本为例,2代表主版本号,6代表次版本号,22代表修正号。其中次版本还有特定的意义:如果是偶数数字,就表示该内核是一个可以放心使用的稳定版;如果是奇数数字,则表示该内核加入了某些测试的新功能,是一个内部可能存在着BUG测试版。如2.5.74表示是一个测试版的内核,2.6.22表示是一个稳定版的内核。读者可以到Linux内核官方网站http://www.kernel.org/下载最新的内核代码,如图1-3所示。
发行版本
- 仅有内核而没有应用软件的操作系统是无法使用的,所以许多公司或社团将内核、源代码及相关的应用程序组织构成一个完整的操作系统,让一般的用户可以简便地安装和使用Linux,这就是所谓的发行版本(distribution),一般谈论的Linux系统便是针对这些发行版本的。目前估计各种发行版本有数十种,它们的发行版本号各不相同,使用的内核版本号也可能不一样,下面就为读者介绍目前比较著名的几个发行版本。