Linux教程

Linux

本文主要是介绍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地址

  1. 查看IP配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33
  1. 以下标红的项必须修改,有值的按照下面的值修改,没有该项的要增加

image-20220717161635984

  1. 重启网络服务
service network restart

2.2 配置主机名

hostname:查看当前服务器的主机名

hostname

hostnamectl:修改主机名

hostnamectl set-hostname centos001

修改主机名也可以修改配置文件

 vi /etc/hostname

修改hosts映射文件

  1. 打开/etc/hosts
vim /etc/hosts
  1. 添加如下内容
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 文件目录类

  1. pwd:打印当前工作目录
pwd
  1. ls:列出目录的内容
ls -a		# 列出全部的文件,连同隐藏文件
ls -l		# 长数据串列出,包含文件的属性与权限等等数据,等同于 ll
ls -lh		# 便于阅读
  1. cd:切换目录
cd /root/	# 绝对目录
cd ./test/	# 相对目录
cd 或 cd ~	# 回自己的家目录
cd - 		# 回上一次所在目录
cd ..		# 跳转到当前目录的上一级目录
cd -P		# 跳转到实际物理路径,而非快捷方式路径
  1. mkdir:创建一个新的目录
mkdir mydir
mkdir mydir/dir2
mkdir -p dir1/dir2/dir3	# 创建一个多级目录
  1. rmdir:删除一个空的目录
rmdir dir1/dir2/dir3	# 只会删除dir3目录
rmdir -p dir1/dir2/dir3	# dir1和dir2若为空了会一并删除
  1. touch:创建空文件
touch /root/info.txt
  1. cp:复制文件或目录
cp xiyou/dssz/suwukong.txt xiyou/mingjie/
cp -r  xiyou/dssz/ ./	# 递归复制整个文件夹
  1. rm:删除文件或目录
rm -f /root/info.txt	# 强制执行删除操作,而不提示用于进行确认
rm -r /root/test		# 递归删除目录中所有内容
rm -v /root/info.txt	# 显示指令的详细执行过程
  1. mv:移动文件与目录或重命名
mv my.txt /root/newFolder/	# 移动文件至其他目录
mv oldName.txt newName.txt	# 重命名
  1. cat:查看文件内容

一般查看比较小的文件,一屏幕能显示全的。

cat -n info.txt		# 显示所有行的行号
  1. more:文件内容分屏查看器

more 指令是一个基于 VI 编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。

操作 功能
空白键 向下翻一页
Enter 向下翻一行
q 退出
Ctrl + F 向下滚动一屏
Ctrl + B 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
more info.conf
  1. less:分屏显示文件内容

less 指令用来分屏查看文件内容,它的功能与 more 指令类似,但是比 more 指令更加强大,支持各种显示终端。less 指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。

操作 功能
空白键 向下翻动一页
[pagedown] 向下翻动一页
[pageup] 向上翻动一页
/字串 向下搜寻字串:n向下查找,N向上查找
?字串 向上搜寻字串:n向上查找,N向下查找
q 退出
  1. echo:输出内容到控制台
echo hello
echo -e "hello\nworld"	# 开启字符转义
  1. head:显示文件头部内容
head info.conf	# 默认显示文件的前10行内容
head -n 20 info.conf # 显示前20行
  1. tail:输出文件尾部内容
tail info.conf		# 查看文件尾部10行内容
tail -n 20 info.conf	# 查看文件尾部20行内容
tail -f info.conf	# 实时追踪该文档的所有更新
  1. >输出重定向和>>追加
ls -l > into.txt	# 将 ls 查看信息写入到文件中(覆写)
ls -l >> info.txt	# 将 ls 查看信息追加到文件中
  1. ln:软链接

软链接也称为符号链接,类似于 windows 里的快捷方式,有自己的数据块,主要存放了链接其他文件的路径。

ln -s ./test/info info.txt		# 给文件创建软连接,可重新起文件名
ln -s ./test/dir1 ./test/dir2	# 给文件夹创建软连接
								# -s 参数表示创建软连接,不加则创建硬链接
rm -f test/dir2					# 删除软链接,目录后面不要写/
cd -P test/dir2					# 进入软链接的实际物理路径
  1. history:查看已执行过的历史命令
history
history -c	# 清空历史列表

4.3 日期时间类

  1. 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"   # 设置时间
  1. cal:查看日历
cal			# 查看当前月的日历
cal 2077	# 查看2077年的日历

4.4 用户管理命令

  1. useradd:添加新用户
useradd user1		# 添加新用户user1
useradd -g group1 user2	# 添加新用户user2到group1组
  1. passwd:设置用户密码
passwd user1
  1. id:查看用户是否存在
id user1	# uid=1000(user1) gid=1001(user) 组=1001(user)
  1. 查看创建了哪些用户
cat /etc/passwd
  1. su:切换用户
su user1	# 切换用户,获得用户的执行权限,但不能获得环境变量
su - user1	# 切换到用户并获得该用户的环境变量及执行权限
  1. userdel:删除用户
userdel user1		# 删除用户,但保留主目录
userdel -r user1	# 用户和用户主目录,都删除
  1. who:查看登录用户信息
whoami		# 当前所在的用户身份
who am i	# 当前用户的实际身份
  1. 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
  1. usermod:修改用户
usermod -g group1 user1		# 修改用户的初始登录组
usermod -aG group2 user1	# 将用户添加至组,并且不会退出之前所在的组

4.5 用户组管理命令

  1. groupadd:新增组
groupadd group1		# 新增group1组
  1. groupdel:删除组
groupdel group1
  1. groupmod:修改组
groupmod -n group1 group2	# 将组名改为group2
  1. 查看已创建的组
cat /etc/group

4.6 文件权限类

文件属性

image-20220717204029527

如果没有权限,就会出现减号[ - ]而已。从左至右用0-9这些数字来表示:

  1. 0 首位表示类型

    在Linux中第一个字符代表这个文件是目录、文件或链接文件等等

    - 代表文件

    d 代表目录

    l 链接文档(link file);

  2. 第1-3位确定属主(该文件的所有者)拥有该文件的权限。---User

  3. 第4-6位确定属组(所有者的同组用户)拥有该文件的权限,---Group

  4. 第7-9位确定其他用户拥有该文件的权限 ---Other

rwx 作用文件和目录的不同解释

作用到文件

  • [ r ]代表可读(read): 可以读取,查看

  • [ w ]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件

  • [ x ]代表可执行(execute):可以被系统执行

作用到目录

  • [ r ]代表可读(read): 可以读取,ls查看目录内容
  • [ w ]代表可写(write): 可以修改,目录内创建+删除+重命名目录
  • [ x ]代表可执行(execute):可以进入该目录
  1. 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/
  1. chown:改变所有者
chown user1 info.txt		# 修改文件的所有者
chown -R user1 test/		# 递归改变文件所有者	
  1. chgrp:改变所属组
chgrp root info.txt		# 修改文件的所属组

4.7 搜索查找类

  1. find:查找文件或者目录
find test/ -name "*.txt"	# 根据名称查找/test目录下的txt文件
find test/ -user user1		# 查找/test目录下,用户名称为-user的文件
find test/ -size +200M		# 在/test目录下查找大于200m的文件(+n 大于 -n小于 n等于)
  1. locate:快速定位文件路径
updatedb	# 更新数据库已获得准确结果
locate tmp	# 查询名称包含tmp的文件和文件夹
  1. grep:过滤查找及|管道符

grep:在文件中查找内容

管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理

grep oo anaconda-ks.cfg		# 在cfg文件中查找oo
ls | grep info				# 列出当前目录的文件,并查找包含info的结果

4.8 压缩和解压缩

  1. gzip/gunzip压缩

只能压缩文件不能压缩目录,不保留原来的文件,同时多个文件会产生多个压缩包。

gzip info.txt		# info.txt.gz,源文件会被删除
gunzip info.txt.gz	# info.txt
  1. zip/unzip压缩
zip mypackage.zip info.txt		# 压缩文件
zip -r package.zip test/		# 压缩文件夹
unzip mypackage.zip				# 解压压缩包至当前文件夹
unzip package.zip -d /opt		# 解压压缩包并指定解压目录
  1. tar
tar -zcvf info.tar.gz info.txt info2.txt	# 压缩多个文件
tar -zxvf info.tar.gz -C /opt				# 解压压缩包并指定目录

4.9 磁盘查看和分区类

  1. du:查看文件和目录占用的磁盘空间
du -sh /root/		# 查看root文件夹的空间占用大小
# 266M	/root/
  1. 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
  1. 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
  1. mount/umount挂载/卸载
mount /dec/cdrom /mnt/cdrom/	# 将光盘挂载至/mnt/cdrom/目录下
umount /mnt/cdrom				# 卸载设备
  1. 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 进程管理类

  1. ps:查看当前系统进程状态
ps aux		# 查看进程的 CPU 占用率和内存占用率
ps -ef		# 查看进程的父进程 ID 
ps aux | grep sshd
  1. kill:终止进程
kill -9 1034	# 终止pid为1034的进程
killall firefox	# 通过进程名杀死进程
  1. 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)
  1. top:实时监控系统进程状态
top -d 1		# 每隔1秒更新,默认3秒
top -p 1005		# 监控pid为1005的进程的状态
top -i			# 使 top 不显示任何闲置或者僵死进程
操作 功能
P 以 CPU 使用率排序,默认就是此项
M 以内存的使用率排序
N 以 PID 排序
q 退出 top
  1. 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 任务

image-20220717225619021

# 每隔 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已不需要配置,会自动从最近的镜像网站下载。

  1. 安装 wget, wget 用来从指定的 URL 下载文件
yum install wget
  1. 在/etc/yum.repos.d/目录下,备份默认的 repos 文件
 cp CentOS-Base.repo CentOS-Base.repo.backup
  1. 下载网易 163 或者是 aliyun 的 repos 文件,任选其一
wget http://mirrors.aliyun.com/repo/Centos-7.repo	# 阿里云
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo	# 网易 163
  1. 使用下载好的 repos文件替换默认的 repos文件
 mv CentOS7-Base-163.repo CentOS-Base.repo
  1. 清理旧缓存数据,缓存新数据
yum clean all
yum makecache

5.4 软件源找不到时

安装软件时提示:no package xxx available

yum search all ifconfig
yum install -y net-tools

image-20220719232337421

其他

last

last		# 显示用户最近登录信息
lastb -i	# 查看失败登录记录
这篇关于Linux的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!