Linux
Linux 常用命令
一、VIM编辑器
1.1 一般模式
语法 | 功能 |
---|---|
yy | 复制光标当前一行 |
数字yy | 从光标所在行开始复制n行 |
p | 粘贴,或在光标所在的下一行粘贴 |
u | 撤销上一步 |
dd | 删除光标所在行 |
数字dd | 从光标所在行开始删除n行 |
x | 剪切光标所在位置的一个字母 |
X | 剪切光标前一个位置的字母 |
yw | 复制一个词 |
dw | 删除一个词 |
^(shift+6) | 移动到行头 |
$(shift+4) | 移动到行尾 |
1,G(shift+g) | 移动到页头 |
G | 移动到页尾 |
数字,G | 移动到目标行 |
w | 移动到下一个单词 |
b | 移动到上一个单词 |
1.2 编辑模式
按键进入编辑模式,按Esc退出。
按键 | 功能 |
---|---|
i | 当前光标前 |
a | 当前光标后 |
o | 当前光标的下一行 |
1.3 指令模式
命令 | 功能 |
---|---|
:w | 保存 |
:q | 退出 |
:! | 强制执行 |
/要查找的词 | n查找下一个,N往上查找 |
:noh | 取消高亮显示 |
:set nu | 显示行号 |
:set nonu | 关闭行号 |
:%s/old/new/g | 替换匹配到的所有内容 |
二、网络配置
2.1 配置网络IP地址
ifconfig
:显示所有网络接口的配置信息
ifconfig
ping
:测试当前服务器是否可以连接目的主机
ping www.baidu.com
修改IP地址
- 查看IP配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33
- 以下标红的项必须修改,有值的按照下面的值修改,没有该项的要增加
- 重启网络服务
service network restart
2.2 配置主机名
hostname
:查看当前服务器的主机名
hostname
hostnamectl
:修改主机名
hostnamectl set-hostname centos001
修改主机名也可以修改配置文件
vi /etc/hostname
修改hosts映射文件
- 打开/etc/hosts
vim /etc/hosts
- 添加如下内容
192.168.2.100 hadoop100
192.168.2.101 hadoop101
192.168.2.102 hadoop102
192.168.2.103 hadoop103
192.168.2.104 hadoop104
192.168.2.105 hadoop105
三、系统管理
基本语法:
systemctl start | stop | restart | status 服务名
# 查看防火墙服务的状态
systemctl status firewalld
# 停止防火墙服务
systemctl stop firewalld
# 启动防火墙服务
systemctl start firewalld
# 重启防火墙服务
systemctl restart firewalld
systemctl 设置后台服务的自启配置:
# 开启防火墙服务的自动启动
systemctl enable firewalld.service
# 关闭防火墙服务的自动启动
systemctl disable firewalld.service
# 查看服务开机启动状态
systemctl list-unit-files
关机重启命令:
# 将数据由内存同步到硬盘中
sync
# 重启
reboot
# 停机(不断电)
halt
# 立马关机(等同于 poweroff)
poweroff
shutdown now
# 系统立马重启(等同于 reboot)
shutdown -r now
CentOS6
# 查看网络服务的状态
service network status
# 停止网络服务
service network stop
# 启动网络服务
service network start
# 重启网络服务
service network restart
# 开启network(网络)服务的自动启动
chkconfig network on
# 关闭network(网络)服务的自动启动
chkconfig network off
四、常用基本命令
4.1 帮助命令
man
:获得帮助信息
man ls
help
:获得 shell 内置命令的帮助信息
help cd
常用快捷键:
常用快捷键 | 功能 |
---|---|
ctrl + c | 停止进程 |
ctrl + l | 清屏,等同于clear;彻底清屏是:reset |
tab键 | 提示 |
上下键 | 查找执行过的命令 |
4.2 文件目录类
pwd
:打印当前工作目录
pwd
ls
:列出目录的内容
ls -a # 列出全部的文件,连同隐藏文件
ls -l # 长数据串列出,包含文件的属性与权限等等数据,等同于 ll
ls -lh # 便于阅读
cd
:切换目录
cd /root/ # 绝对目录
cd ./test/ # 相对目录
cd 或 cd ~ # 回自己的家目录
cd - # 回上一次所在目录
cd .. # 跳转到当前目录的上一级目录
cd -P # 跳转到实际物理路径,而非快捷方式路径
mkdir
:创建一个新的目录
mkdir mydir
mkdir mydir/dir2
mkdir -p dir1/dir2/dir3 # 创建一个多级目录
rmdir
:删除一个空的目录
rmdir dir1/dir2/dir3 # 只会删除dir3目录
rmdir -p dir1/dir2/dir3 # dir1和dir2若为空了会一并删除
touch
:创建空文件
touch /root/info.txt
cp
:复制文件或目录
cp xiyou/dssz/suwukong.txt xiyou/mingjie/
cp -r xiyou/dssz/ ./ # 递归复制整个文件夹
rm
:删除文件或目录
rm -f /root/info.txt # 强制执行删除操作,而不提示用于进行确认
rm -r /root/test # 递归删除目录中所有内容
rm -v /root/info.txt # 显示指令的详细执行过程
mv
:移动文件与目录或重命名
mv my.txt /root/newFolder/ # 移动文件至其他目录
mv oldName.txt newName.txt # 重命名
cat
:查看文件内容
一般查看比较小的文件,一屏幕能显示全的。
cat -n info.txt # 显示所有行的行号
more
:文件内容分屏查看器
more 指令是一个基于 VI 编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。
操作 | 功能 |
---|---|
空白键 | 向下翻一页 |
Enter | 向下翻一行 |
q | 退出 |
Ctrl + F | 向下滚动一屏 |
Ctrl + B | 返回上一屏 |
= | 输出当前行的行号 |
:f | 输出文件名和当前行的行号 |
more info.conf
less
:分屏显示文件内容
less 指令用来分屏查看文件内容,它的功能与 more 指令类似,但是比 more 指令更加强大,支持各种显示终端。less 指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
操作 | 功能 |
---|---|
空白键 | 向下翻动一页 |
[pagedown] | 向下翻动一页 |
[pageup] | 向上翻动一页 |
/字串 | 向下搜寻字串:n向下查找,N向上查找 |
?字串 | 向上搜寻字串:n向上查找,N向下查找 |
q | 退出 |
echo
:输出内容到控制台
echo hello
echo -e "hello\nworld" # 开启字符转义
head
:显示文件头部内容
head info.conf # 默认显示文件的前10行内容
head -n 20 info.conf # 显示前20行
tail
:输出文件尾部内容
tail info.conf # 查看文件尾部10行内容
tail -n 20 info.conf # 查看文件尾部20行内容
tail -f info.conf # 实时追踪该文档的所有更新
>
输出重定向和>>
追加
ls -l > into.txt # 将 ls 查看信息写入到文件中(覆写)
ls -l >> info.txt # 将 ls 查看信息追加到文件中
ln
:软链接
软链接也称为符号链接,类似于 windows 里的快捷方式,有自己的数据块,主要存放了链接其他文件的路径。
ln -s ./test/info info.txt # 给文件创建软连接,可重新起文件名
ln -s ./test/dir1 ./test/dir2 # 给文件夹创建软连接
# -s 参数表示创建软连接,不加则创建硬链接
rm -f test/dir2 # 删除软链接,目录后面不要写/
cd -P test/dir2 # 进入软链接的实际物理路径
history
:查看已执行过的历史命令
history
history -c # 清空历史列表
4.3 日期时间类
date
date # 显示当前时间 2022年 07月 17日 星期日 18:44:18 CST
date "+%Y-%m-%d %H:%M:%S" # 2022-07-17 18:44:42
计算时间
date -d "1 years ago" # 1年前的时间
date -d "-3 days ago" # 3天后的时间
设置系统时间
date -s "2012-05-23 01:01:01" # 设置时间
cal
:查看日历
cal # 查看当前月的日历
cal 2077 # 查看2077年的日历
4.4 用户管理命令
useradd
:添加新用户
useradd user1 # 添加新用户user1
useradd -g group1 user2 # 添加新用户user2到group1组
passwd
:设置用户密码
passwd user1
id
:查看用户是否存在
id user1 # uid=1000(user1) gid=1001(user) 组=1001(user)
- 查看创建了哪些用户
cat /etc/passwd
su
:切换用户
su user1 # 切换用户,获得用户的执行权限,但不能获得环境变量
su - user1 # 切换到用户并获得该用户的环境变量及执行权限
userdel
:删除用户
userdel user1 # 删除用户,但保留主目录
userdel -r user1 # 用户和用户主目录,都删除
who
:查看登录用户信息
whoami # 当前所在的用户身份
who am i # 当前用户的实际身份
sudo
:设置普通用户具有root权限
添加userT用户,并设置密码
useradd userT
passwd userT
修改配置文件/etc/sudoers
,找到下面一行(91 行),在 root下面添加一行
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
userT ALL=(ALL) ALL
或者配置成采用 sudo 命令时,不需要输入密码
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
userT ALL=(ALL) NOPASSWD:ALL
现在可以用 userT帐号登录,然后用命令 sudo ,即可获得 root 权限进行操作
sudo mkdir /opt/module
usermod
:修改用户
usermod -g group1 user1 # 修改用户的初始登录组
usermod -aG group2 user1 # 将用户添加至组,并且不会退出之前所在的组
4.5 用户组管理命令
groupadd
:新增组
groupadd group1 # 新增group1组
groupdel
:删除组
groupdel group1
groupmod
:修改组
groupmod -n group1 group2 # 将组名改为group2
- 查看已创建的组
cat /etc/group
4.6 文件权限类
文件属性
如果没有权限,就会出现减号[ – ]而已。从左至右用0-9这些数字来表示:
0 首位表示类型
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等
– 代表文件
d 代表目录
l 链接文档(link file);
第1-3位确定属主(该文件的所有者)拥有该文件的权限。—User
第4-6位确定属组(所有者的同组用户)拥有该文件的权限,—Group
第7-9位确定其他用户拥有该文件的权限 —Other
rwx 作用文件和目录的不同解释
作用到文件:
-
[ r ]代表可读(read): 可以读取,查看
-
[ w ]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件
-
[ x ]代表可执行(execute):可以被系统执行
作用到目录:
- [ r ]代表可读(read): 可以读取,ls查看目录内容
- [ w ]代表可写(write): 可以修改,目录内创建+删除+重命名目录
- [ x ]代表可执行(execute):可以进入该目录
chmod
:改变权限
chmod [{ugoa}{+-=}{rwx}] 文件或目录
u:所有者 g:所有组 o:其他人 a:所有人(u、g、o 的总和)
chmod [mode=421 ] [文件或目录]
r=4 w=2 x=1 rwx=4+2+1=7
# 修改文件使其所属主用户具有执行权限
chmod u+x info.txt
# 修改文件使其所属组用户具有执行权限
chmod g+x info.txt
# 设置文件所有者、所属组、其他用户都具有可读可写可执行权限
chmod 777 info.txt
# 文件主具有写权限,其他用户不具有写权限
chmod 755 info.txt
# 修改整个文件夹里面的所有文件的所有者、所属组、其他用户都具有可读可写可执行权限
chmod -R 777 test/
chown
:改变所有者
chown user1 info.txt # 修改文件的所有者
chown -R user1 test/ # 递归改变文件所有者
chgrp
:改变所属组
chgrp root info.txt # 修改文件的所属组
4.7 搜索查找类
find
:查找文件或者目录
find test/ -name "*.txt" # 根据名称查找/test目录下的txt文件
find test/ -user user1 # 查找/test目录下,用户名称为-user的文件
find test/ -size +200M # 在/test目录下查找大于200m的文件(+n 大于 -n小于 n等于)
locate
:快速定位文件路径
updatedb # 更新数据库已获得准确结果
locate tmp # 查询名称包含tmp的文件和文件夹
grep
:过滤查找及|
管道符
grep:在文件中查找内容
管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理
grep oo anaconda-ks.cfg # 在cfg文件中查找oo
ls | grep info # 列出当前目录的文件,并查找包含info的结果
4.8 压缩和解压缩
gzip
/gunzip
压缩
只能压缩文件不能压缩目录,不保留原来的文件,同时多个文件会产生多个压缩包。
gzip info.txt # info.txt.gz,源文件会被删除
gunzip info.txt.gz # info.txt
zip
/unzip
压缩
zip mypackage.zip info.txt # 压缩文件
zip -r package.zip test/ # 压缩文件夹
unzip mypackage.zip # 解压压缩包至当前文件夹
unzip package.zip -d /opt # 解压压缩包并指定解压目录
tar
tar -zcvf info.tar.gz info.txt info2.txt # 压缩多个文件
tar -zxvf info.tar.gz -C /opt # 解压压缩包并指定目录
4.9 磁盘查看和分区类
du
:查看文件和目录占用的磁盘空间
du -sh /root/ # 查看root文件夹的空间占用大小
# 266M /root/
df
:查看磁盘空间使用情况
df -h # 列出文件系统的整体磁盘使用量,检查文件系统的磁盘空间占用情况
# 文件系统 容量 已用 可用 已用% 挂载点
# devtmpfs 979M 0 979M 0% /dev
# tmpfs 991M 0 991M 0% /dev/shm
# tmpfs 991M 9.6M 981M 1% /run
# tmpfs 991M 0 991M 0% /sys/fs/cgroup
# /dev/mapper/centos-root 15G 2.0G 14G 14% /
# /dev/sda1 1014M 168M 847M 17% /boot
# tmpfs 199M 0 199M 0% /run/user/0
lsblk
:查看设备挂载情况
lsblk -f # 查看详细的设备挂载情况,显示文件系统信息
# NAME FSTYPE LABEL UUID MOUNTPOINT
# sda
# ├─sda1 xfs 180ee439-789d-4b1d-be53-d63f6066f11e /boot
# └─sda2 LVM2_member 5azPqO-q7cw-iWXa-DGv7-3Wdt-2PkQ-bBhkaJ
# ├─centos-root xfs 1a8bbb8c-e3a5-4662-8564-8c4261a4ea9b /
# └─centos-swap swap fa1d12a1-8a1c-434d-ac78-6eaec5d43b87 [SWAP]
# sr0
mount
/umount
挂载/卸载
mount /dec/cdrom /mnt/cdrom/ # 将光盘挂载至/mnt/cdrom/目录下
umount /mnt/cdrom # 卸载设备
fdisk
:分区
fdisk -l # 查看磁盘分区详情
fdisk 硬盘设备名 # 对新增硬盘进行分区操作
结果:
磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000bea21
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 41943039 19921920 8e Linux LVM
磁盘 /dev/mapper/centos-root:16.1 GB, 16101933056 字节,31449088 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/mapper/centos-swap:4294 MB, 4294967296 字节,8388608 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
4.10 进程管理类
ps
:查看当前系统进程状态
ps aux # 查看进程的 CPU 占用率和内存占用率
ps -ef # 查看进程的父进程 ID
ps aux | grep sshd
kill
:终止进程
kill -9 1034 # 终止pid为1034的进程
killall firefox # 通过进程名杀死进程
pstree
:查看进程树
pstree -p # 显示进程的pid
pstree -u # 显示进程的所属用户
结果:
systemd(1)─┬─NetworkManager(757)─┬─{NetworkManager}(768)
│ └─{NetworkManager}(772)
├─VGAuthService(681)
├─agetty(712)
├─auditd(657)───{auditd}(658)
├─chronyd(705)
├─crond(703)
├─dbus-daemon(686)───{dbus-daemon}(695)
├─firewalld(721)───{firewalld}(880)
├─irqbalance(683)
├─lvmetad(521)
├─master(1186)─┬─pickup(5953)
│ └─qmgr(1192)
├─polkitd(680)─┬─{polkitd}(693)
│ ├─{polkitd}(696)
│ ├─{polkitd}(699)
│ ├─{polkitd}(700)
│ ├─{polkitd}(701)
│ └─{polkitd}(708)
├─rsyslogd(1063)─┬─{rsyslogd}(1067)
│ └─{rsyslogd}(1068)
├─sshd(1062)───sshd(1319)───bash(1323)───pstree(6500)
├─systemd-journal(495)
├─systemd-logind(684)
├─systemd-udevd(528)
├─tuned(1064)─┬─{tuned}(1312)
│ ├─{tuned}(1313)
│ ├─{tuned}(1315)
│ └─{tuned}(1316)
└─vmtoolsd(682)─┬─{vmtoolsd}(709)
└─{vmtoolsd}(724)
top
:实时监控系统进程状态
top -d 1 # 每隔1秒更新,默认3秒
top -p 1005 # 监控pid为1005的进程的状态
top -i # 使 top 不显示任何闲置或者僵死进程
操作 | 功能 |
---|---|
P | 以 CPU 使用率排序,默认就是此项 |
M | 以内存的使用率排序 |
N | 以 PID 排序 |
q | 退出 top |
netstat
:显示网络状态和端口占用信息
netstat -anp | grep sshd # 查看sshd进程的网络信息
netstat -nltp | grep 22 # 查看某端口号是否被占用
4.11 定时任务设置
重启crond服务
systemctl restart crond
crontab定时任务设置
crontab -e # 编辑 crontab 定时任务
crontab -l # 查询 crontab 任务
crontab -r # 删除当前用户所有的 crontab 任务
# 每隔 1 分钟,向/root/bailongma.txt 文件中添加一个 11 的数字
*/1 * * * * /bin/echo ”11” >> /root/bailongma.txt
五、软件包管理
5.1 RPM
RPM(RedHat Package Manager),RedHat软件包管理工具,类似windows里面的setup.exe是Linux这系列操作系统里面的打包安装工具,它虽然是RedHat的标志,但理念是通用的。
rpm -qa | grep firefox # 查询所安装的所有 rpm软件包,然后删选
rpm -e firefox # 卸载firefox软件
rpm -ivh firefox-45.0.1-1.el6.centos.x86_64.rpm # 安装firefox
# 当前目录下需要有安装包
5.2 YUM仓库配置
YUM(全称为 Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 CentOS中的 Shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
yum check-update # 检查是否有可用的更新 rpm软件包
yum update # 更新 rpm软件包
yum install -y firefox # 安装
yum remove firefox # 卸载
yum list firefox # 显示可用的软件包信息
yum clean all # 清理 yum 过期的缓存
yum deplist firefox # 显示 yum 软件包的所有依赖关系
5.3 修改网络YUM源
CentOS7已不需要配置,会自动从最近的镜像网站下载。
- 安装 wget, wget 用来从指定的 URL 下载文件
yum install wget
- 在/etc/yum.repos.d/目录下,备份默认的 repos 文件
cp CentOS-Base.repo CentOS-Base.repo.backup
- 下载网易 163 或者是 aliyun 的 repos 文件,任选其一
wget http://mirrors.aliyun.com/repo/Centos-7.repo # 阿里云
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo # 网易 163
- 使用下载好的 repos文件替换默认的 repos文件
mv CentOS7-Base-163.repo CentOS-Base.repo
- 清理旧缓存数据,缓存新数据
yum clean all
yum makecache
5.4 软件源找不到时
安装软件时提示:no package xxx available
yum search all ifconfig
yum install -y net-tools
其他
last
last # 显示用户最近登录信息
lastb -i # 查看失败登录记录