关机重启
| 命令 | 说明 | 备注 |
|---|---|---|
shutdown -h now |
立即关机 | h为halt的意思 |
shutdown -h 1 |
通知给所有终端知道,并于1分钟后关机 | 默认shutdown的效果,使用-c取消 |
shutdown -r now |
立即重启 | r为reboot的意思 |
halt |
立即关机 | - |
reboot |
立即重启 | - |
sync |
把内存的数据同步到磁盘中 | 建议每次关机重启之前都执行一遍或多遍这个命令 |
用户登录、注销
| 命令 | 说明 | 备注 |
|---|---|---|
su - xxx |
运行替换用户和组标识的shell,即以xxx这个用户登录 | 高权限到低权限不需要密码,使用exit或logout退出 |
logout |
注销用户 | 在图形运行级别(5)无效,在运行进行级别3下有效 |
关于运行级别,详见下面的内容。
用户管理
| 命令 | 说明 | 备注 |
|---|---|---|
useradd 用户名 |
添加用户 | -d 指定家目录,如:useradd -d /home/test king |
passwd 用户名 |
修改密码 | 如不写用户名,默认给当前用户改 |
userdel 用户名 |
删除用户,保留家目录 | -r 删除用户和家目录 |
用户查询
| 命令 | 说明 | 备注 |
|---|---|---|
id 用户名 |
查询用户信息 | - |
whoami |
查看当前登录用户 | who am i 是登录shell时的用户,即使用su命令后也不变 |
用户组操作
组:方便系统对有共性的多个用户进行统一管理(一般为权限)
| 命令 | 说明 | 备注 |
|---|---|---|
groupadd 组名 |
新增组 | - |
groupdel 组名 |
删除组 | - |
usermod -g 组名 用户名 |
修改用户的组 | -d可以改默认登录目录:usermod -d 目录 用户名(需要有进入目录的权限) |
useradd -g 组名 用户名 |
创建用户并将其加入到一个存在的组 | - |
1 用户和组相关的文件
/etc/passwd用户配置文件,记录用户各种信息
如:root:x:0:0:root:/root:/bin/bash
lczmx:x:1000:1000:lczmx:/home/lczmx:/bin/bash含义:
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell/etc/shadow口令的配置文件
含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志/etc/group组的配置文件,记录linux包含的组信息
含义:组名:口令:组标识号:组内用户列表
运行级别
| 命令 | 说明 | 备注 |
|---|---|---|
init 0/1/2/3/4/5/6 |
指定运行级别 | - |
systemctl get-default |
获得当前级别 | - |
systemctl set-default TARGET.target |
设置运行级别为5 | centos7以后(包括7)使用命令, 而之前的版本要修改 /etc/inittab文件 |
运行级别对应表:
| init级别 | systemctl target | 说明 |
|---|---|---|
| 0 | shutdown.target |
关机 |
| 1 | emergency.target |
单用户可用于找回丢失密码 |
| 2 | rescure.target |
多用户无网络 |
| 3 | multi-user.target |
多用户有网络 |
| 4 | - | 系统保留给用户 |
| 5 | graphical.target |
图形界面 |
| 6 | - | 重启 |
帮助指令
| 命令 | 说明 |
|---|---|
man 命令 |
获取帮助信息 |
help 命令 |
获取shell内置命令的帮助信息 |
文件与目录
| 命令 | 说明 | 备注 |
|---|---|---|
pwd |
显示当前工作目录的绝对路径 | |
ls [路径] |
列出文件 | -a显示隐藏文件,-l以列表形式显示 |
cd (绝对/相对)路径 |
改变shell的当前工作目录 | cd ..上一级 cd ~ 家目录 |
mkdir 路径 |
创建目录 | 如 mkdir /home/test/ ,-p 创建多级 mkdir -p /home/test/dog |
rmdir 路径 |
删除空目录 | 非空目录要用rm -rf (慎用) |
touch 路径 |
创建空文件 | |
cp 源路径 目标路径 |
将”源路径”下的东西拷贝到”目标路径”下 | -r 递归复制整个文件夹 。\cp强制覆盖不提示, 如 \cp -r /home/test /tmp |
mv 源路径 目标路径 |
移动或重命名(在同一目录时为重命名,不同目录时为移动) | 如mv ./t1.txt ./t2.txt:重命名 ,mv ./t1.txt ./test/:移动 |
rm 文件或目录路径 |
移除文件或目录 | -f 不提示, -r 递归删除整个文件夹 |
ln 文件或目录 软连接名 |
为文件(夹)创建链接 | 链接类型分为硬链接和符号链接,默认硬链接,使用-s创建软连接 |
关于硬链接和软连接可以参考硬链接和软连接的区别
查看文件
| 命令 | 说明 | 备注 |
|---|---|---|
cat 文件路径 |
查看文件内容,不能修改文件 | -n显示行号 通常与more一起使用 :`cat /etc/profile |
echo 输出内容 |
输出内容到控制台 | 如echo $SHELL。-e 输出转义内容:echo -e "hello \n world!" |
head 文件 |
显示文件的头部内容,默认前10行 | -n 指定行数,如:前20行 head -n 20 /etc/profile |
tail 文件 |
显示文件尾部,默认后10行 | -n 指定行数, -f 实时跟踪文件更新 |
more 文件基于vi的文本过滤器空格:下一屏
回车:下一行
q:离开more
F: 下一屏
B: 上一屏
=: 输出当前行号
:f: 输出文件名和当前行号less 文件用分屏查看文件内容,类似more但强于more,对于大型文件具有较高效率空格/f:下一页
b: 上一页
q:离开less
?或/ :向上或下查找,使用n和N移动
j或k:上或下一行
h或H查看帮助
时间日期
| 命令 | 说明 | 备注 |
|---|---|---|
cal |
查看日历(默认本月) | -3 近三个月的;-m 星期一作为第一天; -y当前年的日历; 指定年份的日历:cal 2020 |
date |
显示当前日期 | 以一定格式输出 date "+%Y/%M/%d" 。-d 显示字符串时间 date -d "2020/11/30 19:11:40"。-s 设置时间date -s "2020/11/30 19:11:40" |
日期格式字符串列表:
| 符号 | 说明 | 符号 | 说明 |
|---|---|---|---|
%n |
下一行 | %t | 跳格 |
%H |
小时(00-23) | %k | 小时(0-23) |
%I(大写i) |
小时(01-12) | %l (小写L) | 小时(1-12) |
%M |
分钟(00-59) | %p | 显示本地 AM 或 PM |
%r |
直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M) | %T | 直接显示时间 (24 小时制) |
%s |
从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数 | %S | 秒(00-60) |
%X |
相当于 %H:%M:%S | %Z | 显示时区 |
%a |
星期几 (Sun-Sat) | %A | 星期几 (Sunday-Saturday) |
%b |
月份 (Jan-Dec) | %h | 同 %b |
%c |
直接显示日期与时间 | %D | 直接显示日期 (mm/dd/yy) |
%j |
一年中的第几天 (001-366) | %w | 一周中的第几天 (0-6) |
%m |
月份 (01-12) | %B | 月份 (January-December) |
%U |
一年中的第几周 (00-53) (以 Sunday 为一周的第一天的情形) | %W | : 一年中的第几周 (00-53) (以 Monday 为一周的第一天的情形) |
%x |
直接显示日期 (mm/dd/yy) | %d | 日 (01-31) |
%y |
年份的最后两位数字 (00.99) | %Y | 完整年份 (0000-9999) |
上述格式不必全都记住,只需要掌握几个常用的即可。
例如%Y表示年,%m表示月,%d表示日,%H表示小时,%M表示分钟,%S表示秒,%s表示从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数,相当于time函数,%w表示一周中的第几天。
搜索查找
find命令
- 格式:
find 路径,如:find /etc -name a.txt或者find /etc -size +1k - 说明:从指定目录向下递归遍历,将满足条件的文件或文件夹显示到终端
- 常用选项:
选项 说明 -name以文件名查 -user以所属用户查 -size以文件大小查 ( +表示大于、-表示小于、不写则为等于),单位有k(小写)、M、G,如例子的+1k
locate命令
- 格式:
locate 文件名,如:locate hello.txt - 说明:快速定位文件路径
注意:第一次运行前,需要执行updatedb命令,指定创建locate数据库 ,然后才能查询
which命令
- 格式:which 命令, 如:
which ls - 说明:查找某个指令在那个目录下
grep命令
- 格式:grep 查找条件 源文件,如:
grep "root" /etc/passwd - 说明:强大的文本搜索工具
- 常用选项:
-n显示匹配行及行号;-i忽略字母大小写
注意:grep命令通常配合管道符|使用,如:cat /etc/passwd | grep root
压缩与解压
- gzip 文件路径,把*文件压缩为*.gz
- gunzip *.gz,把gz文件解压出来
- zip *.zip 路径,压缩文件或目录
-r:递归压缩(压缩目录)- 如:
zip -r myHome.zip /home/(连同home在内的全部压缩)
- unzip *.zip,解压缩文件
-d指定解压路径
- tar 命令
tar -zcvf xxx.tar.gz 路径,打包并压缩,如:tar -zcvf result.tar.gz /home/tar -zxvf xxx.tar.gz -C 路径,解包,如:tar -zxvf result.tar.gz -C ./temp/- 选项详解:
-c产生.tar打包件-x解包.tar文件-v显示详细信息-f指定的文件名-z打包的同时压缩或提取的同时解压-C指定解压路径。
组管理和权限管理
| 命令 | 说明 | 备注 |
|---|---|---|
ls -ahl |
查看文件的所有者等信息 | |
chown 用户名 文件或目录 |
修改文件所有者 | -R 递归改变;改变所有者和所有组:chown 新用户:新组 文件或目录 |
chgrp 组名 文件或目录 |
修改文件所在组 | -R递归改变 |
chmod |
修改权限 | 方式一:+-= 结合 u g o a(所有人) 结合 wrx:chmod u=rwx,g=rx,o=x 文件或目录;chmod u+x,o-w 文件或目录。方式二:利用数字r=4, w=2, x=1:chmod 751 文件或目录 |
关于所有者等:
- linux中,每个用户必须属于一个组,不能独立于组外
- 所有者: 一般谁创建的文件,谁就是所有者
- 所有组:当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组
- 其他人:除开文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组
读写执行权限对文件和目录的作用:
- 文件
- r:读取查看
- w:修改,但删除文件要看目录
- r: 执行
- 目录
- r: 可读,即可以ls
- w:可以创建、删除、重命名
- x:进入目录
假如输入ls -ahl 将看到的一行文字,解析其含义:-rw-rw-r--. 1 lczmx lczmx 21 12月 1 14:43 abc.txt
- 第0位( - l d c b), 确定文件类型
-普通文件
l链接
d目录
c字符设备文件(鼠标,键盘、、)
b块设备(硬盘) - 1-3位所有者对该文件的权限
- 4-6位所有组对该文件的权限
- 7-9位其他用户对该文件的权限
1表示硬链接数lczmx表示 所有者lczmx表示所有组21表示文件大小12月 1 14:43最后修改日期abc.txt文件名
定时任务
任务调度crond
任务调度:指定系统在某个时间执行的特定的命令或程序
任务调度分类:
- 系统工作:重要工作需要周而复始
- 个别用户工作:某用户希望执行的程序
| 命令 | 说明 | 备注 |
|---|---|---|
crontab -e |
编辑定时任务 | -l 查询定时任务; -r 删除当前用户的所有定时任务 |
service crond restart |
重启任务调度 | - |
crond中以五个占位符表示时间(以空格隔开的),其含义:
| 占位符 | 说明 | 范围 |
|---|---|---|
| 第一个 | 一小时中的第几分钟 | 0-59 |
| 第二个 | 一天中的第几小时 | 0-23 |
| 第三个 | 一月中的第几天 | 1-31 |
| 第四个 | 一年中的第几个月 | 1-12 |
| 第五个 | 一周中的星期几 | 0-7(0和7代表星期日) |
特殊字符的说明:
| 字符 | 说明 |
|---|---|
* |
任意时间 |
, |
不连续的时间 |
- |
连续时间 |
*/ |
每隔多长时间 |
占位符与上述字符结合,可以表示很多时间,比如这些例子:45 22 * * * 每天22:450 17 * * 1 每周一的17:000 4 1,15 * * 1号或15号的4:0040 4 * * 1-5 周一到周五的4:40*/10 4 * * * 四点的每10分钟(4:10、4:20……)
crond的使用方式:
方式一
- 输入
crontab -e命令 - 输入任务(用的是vim):
*/1 * * * * ls -l /etc/ > /tmp/to.txt==>表示每隔一分钟将ls -l /etc/这个命令的结果重定向到/temp/to.txt :wq保存退出
- 输入
方式二
创建一个shell脚本文件, 路径为/home/lczmx/task.sh,内容如下:
$date >> mycal $cal >> mycal为脚本添加执行权限:
chmod u+x /home/lczmx/task.sh输入
crontab -e命令输入任务:
*/1 * * * * /home/lczmx/task.sh:wq保存退出
at定时任务
at命令:用于指定一次性的定时命令。
at的守护进程atd会以后台模式运行,每隔一段时间(60秒)检查作业队列来运行,所以使用at命令时,一定要保证atd进程的启动。
使用命令:ps -ef | grep atd查看(ps -ef: 检测所有当前运行的进程)。
at命令的选项
| 命令 | 说明 | 备注 |
|---|---|---|
-m |
任务完成后给用户发送邮件 | - |
-I |
列出任务队列 | 可以使用别名atq |
-d <编号> |
删除队列中的任务 | 可以使用别名 可以使用别名atrm |
-v |
显示任务将被执行的时间 | - |
-q <队列> |
使用指定队列 | - |
-f <文件> |
使用指定文件读入任务 | - |
指定时间:
- hh:mm 小时:分钟,如:06:00
- 12小时制,如:12pm
- 具体时间,格式:月 日、月 日 年、日.月.年,指定时间必须在指定日期后面。如:06:00 2020-12-3
- 相对时法,格式Now+time-units,time-units是时间单位,有minutes hours days weeks,如now + minutes (五分钟后)
- 直接用today tomorrow
- 用midnight noon teatime(下午四点左右)
at命令的使用
- at 时间:
at 5pm + 2days(两天后的下午5点执行) - 输入要执行的命令或shell脚本:
/bin/ls /home - 连续两次ctrl + D退出编辑界面
$at 5pm + 2days
at> /bin/ls /home
at> <EOT>
job 4 at Sat Dec 5 17:00:00 2020
可以使用atq查看任务队列,可以看到任务的编号、执行时间、创建人是谁。
$atq
4 Sat Dec 5 17:00:00 2020 a lczmx
磁盘分区及挂载
linux采用一种载入的处理方式,整个文件系统以文件树的结构存在,一个分区和一个目录联系一起(挂载)。
查看所有设备挂载情况
lsblk查看所有设备挂载情况,-f 更加详细(有fs格式、40位uuid唯一标识符 )
关于磁盘:
scsi硬盘:标识是sdx
,如:sda1、sda2、sda3 … sdb … sdc …
ide硬盘:标识是hdx
为电脑增加一块硬盘的步骤
添加硬盘
分区
使用fdisk分区命令fdisk 常用选项 说明 m显示命令列表 p显示磁盘分区,同 fdisk -ln新增分区 d删除分区 w写入并推出 q退出不保存 分区步骤
使用命令,指定要分区的设备:
fdisk /dev/sdb$fdisk /dev/sdb 欢迎使用 fdisk (util-linux 2.23.2)。 更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。 Device does not contain a recognized partition table 使用磁盘标识符 0x30a50703 创建新的 DOS 磁盘标签。输入
m:显示帮助(不看也行)命令(输入 m 获取帮助):m 命令操作 a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition g create a new empty GPT partition table G create an IRIX (SGI) partition table l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only)开始分区输入
n:创建分区命令(输入 m 获取帮助):n Partition type: p primary (0 primary, 0 extended, 4 free) e extended新增分区选择
p:分区类型为主分区(根据自己的需要来)Select (default p): p选择分区号(默认就好)
分区号 (1-4,默认 1):1选择起始扇区(默认就好)
起始 扇区 (2048-2097151,默认为 2048): 将使用默认值 2048选择此分区的大小 KMG(如: +20G)(要分多个分区的话,记得留点)
Last 扇区, +扇区 or +size{K,M,G} (2048-2097151,默认为 2097151):+200M 分区 2 已设置为 Linux 类型,大小设为 200 MiB这里我多分了一个区,没有需求的可以直接第八步
命令(输入 m 获取帮助):n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): p 分区号 (2-4,默认 2): 起始 扇区 (411648-2097151,默认为 411648): 将使用默认值 411648 Last 扇区, +扇区 or +size{K,M,G} (411648-2097151,默认为 2097151): 将使用默认值 2097151 分区 2 已设置为 Linux 类型,大小设为 823 MiBw:写入分区退出(若不保存则输入q)
命令(输入 m 获取帮助):w The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盘。查看分区结果
分区前$lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot ├─sda2 8:2 0 17G 0 part / └─sda3 8:3 0 2G 0 part [SWAP] sdb 8:16 0 1G 0 disk sr0 11:0 1 1024M 0 rom分区后
$lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part /boot ├─sda2 8:2 0 17G 0 part / └─sda3 8:3 0 2G 0 part [SWAP] sdb 8:16 0 1G 0 disk ├─sdb1 8:17 0 200M 0 part └─sdb2 8:18 0 823M 0 part sr0 11:0 1 1024M 0 rom
格式化
未格式化过的分区是不可以使用的,可以通过lsblk -f命令查看是否已经格式化。(有UUID就证明已经格式化过了)$lsblk -f NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 ext4 ecc17b31-f225-4ac5-b7bd-c5017fa2f224 /boot ├─sda2 ext4 db36ba76-89c8-4593-8b24-580e2dbfa18d / └─sda3 swap f843c352-ca65-457d-b2f9-c64e89e22a58 [SWAP] sdb ├─sdb1 └─sdb2 sr0假如没有格式化的话,需要使用格式化命令:
mkfs -t 文件系统类型 分区,如:mkfs -t ext4 /dev/sdb1开始格式化:
$mkfs -t ext4 /dev/sdb1 mke2fs 1.42.9 (28-Dec-2013) 文件系统标签= OS type: Linux 块大小=1024 (log=0) 分块大小=1024 (log=0) ...... ...... $mkfs -t ext4 /dev/sdb2 mke2fs 1.42.9 (28-Dec-2013) 文件系统标签= OS type: Linux ...... ......再次查看
$lsblk -f NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 ext4 ecc17b31-f225-4ac5-b7bd-c5017fa2f224 /boot ├─sda2 ext4 db36ba76-89c8-4593-8b24-580e2dbfa18d / └─sda3 swap f843c352-ca65-457d-b2f9-c64e89e22a58 [SWAP] sdb ├─sdb1 ext4 1371bca2-d95c-48ec-84e4-0c1483e175fd └─sdb2 ext4 c4ec0a6a-8af7-46c5-921e-fa6a37fcac38挂载
挂载就是给目录与分区建立联系,挂载后目录就相当于是分区的大门了。
挂载有两个步骤:
第一步:确定挂载点,可以创建 一个目录,也可以选择已有的。第二步:输入命令:
mount 设备名称 挂载目录,如:mount /dev/sdb1 /mydisk要卸载的话使用:
umount /dev/sdb1 /mydisk或者umount /mydisk注意:使用命令行的方式进性挂载,重启后失效!!
设置自动挂载
上面已经说了,使用mount命令挂载在电脑重启后会失效,为了解决这个问题,可以通过修改/etc/fstab这个文件来实现永久挂载。
先看一看这个文件的内容:$cat /etc/fstab # # /etc/fstab # Created by anaconda on Sat Nov 28 19:57:23 2020 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # UUID=db36ba76-89c8-4593-8b24-580e2dbfa18d / ext4 defaults 1 1 UUID=ecc17b31-f225-4ac5-b7bd-c5017fa2f224 /boot ext4 defaults 1 2 UUID=f843c352-ca65-457d-b2f9-c64e89e22a58 swap swap defaults 0 0这个文件配置是有一定的格式的,所以下面讲解一下格式
fstab输入格式详解:UUID=db36ba76-89c8-4593-8b24-580e2dbfa18d / ext4 defaults 1 1 UUID:分区的UUID(也可以 /dev/sdb1这种形式)挂载点 文件系统格式 文件系统的参数 能否被dump备份命令作用 是否检验扇区 - 文件系统的参数
Async/sync: 设置是否为同步方式运行,默认为asyncauto/noauto: 当下载mount -a的命令时,此文件系统是否被主动挂载。默认为autorw/ro: 是否以以只读或者读写模式挂载exec/noexec: 限制此文件系统内是否能够进行”执行”的操作user/nouser: 是否允许用户使用mount命令挂载suid/nosuid: 是否允许SUID的存在Usrquota: 启动文件系统支持磁盘配额模式Grpquota: 启动文件系统对群组磁盘配额模式的支持Defaults: 同事具有rw,suid,dev,exec,auto,nouser,async等默认参数的设置
- 能否被dump备份命令作用
- 0: 代表不要做dump备份
- 1: 代表要每天进行dump的操作
- 2: 代表不定日期的进行dump操作
- 是否检验扇区
开机的过程中,系统默认会以fsck检验我们系统是否为完整
- 0: 不要检验
- 1: 最早检验(一般根目录会选择)
- 2: 1级别检验完成之后进行检验
根据上述的解释,写入自己的配置,保存退出。添加完成后,执行
mount -a立即生效- 文件系统的参数
磁盘情况查询
| 命令 | 说明 | 备注 |
|---|---|---|
df -h |
查循系统整体磁盘使用情况 | - |
du -h 目录 |
查询指定目录的磁盘占用情况,默认当前目录 | -s 指定目录占用大小;-h 带计量单位;-a 含文件;--max-depth=1 子目录深度;-c 列出明细的同时,增加汇总值 |
磁盘情况工作实用指令
- 统计某个目录下有多少个文件
ls -l | grep "^-" | wc -l - 统计某个目录下有多少个文件(包括子文件夹的)
ls -lR | grep "^-" | wc -l - 树状结构查看目录
tree 目录
网络配置
关于网络的两条指令:
ifconfig: 配置和显示Linux系统网卡的网络参数ping: 目的主机 测试主机之间的网络连通性
检测主机连接
执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常
使用:ping ip地址
配置网络
下面讲解如何修改配置文件,指定ip,并可以连接公网.
修改配置文件
这里修改的是/etc/sysconfig/network-scripts/下的ifcfg-ens33文件 (不同的网卡对应不同的文件,格式为ifcfg-+ 网卡名称, )
vim /etc/sysconfig/network-scripts/ifcfg-ens33
具体配置根据个人而定BOOTPROTO="static" # 是否要使用静态地址,动态地址用 "dhcp" ############### 假如是dhcp的话,不用写下面这几个 ################### IPADDR=xxx.xxx.xxx.xxx # ip地址 GATEWAY=xxx.xxx.xxx.xxx # 网关 DNS1=xx.xxx.xxx.xxx # 域名系统重启网络服务
使用service network restart命令重启网络服务或者使用reboot重启电脑
设置主机名和hosts映射
主机名:修改/etc/hostname,这是一个只要主机名的文件,改成自己想要的,保存退出即可。
注意:需要重启才能生效。
hosts:修改/etc/hosts,格式是:ip host,如111.111.111.111 www.baidu.com
DNS查询流程: 浏览器缓存 –> DNS缓存 –> hosts –> DNS
windows显示和清理DNS:ipconfig /displaydns # 显示ipconfig /flushdns # 清理
监控网络状态
netstat是用来监控网络状态的指令。一般使用的选项有:-an: 按一定的顺序输出、-p: 显示哪个进程调用。
所以,一般用netstat -anp这个命令。
进程管理
查看进程
进程有前台与后台之分,在linux中使用ps命令查看进程。
ps 查看进程命令;-a 显示当前终端所有进程;-u 以用户格式显示 ;-x 显示后台进程运行参数。
常使用ps -aux命令,其输出格式 :
| USER | PID | %CPU | %MEM | VSZ | RSS | TTY | STAT | START | TIME | COMMAND |
|---|---|---|---|---|---|---|---|---|---|---|
| 进程所有者 | 进程ID | 占用的 CPU 使用率 | 占用的内存使用率 | 占用的虚拟内存大小 | 占用的内存大小 | 终端的次要装置号码 | 进程状态(S: 睡眠 R: 正在运行 Z: 僵死 T: 被跟踪/停止) | 启动进程的时间 | 进程消耗CPU的时间 | 命令的名称和参数 |
查看父进程
ps -ef(-e 显示所有进程、-f 全格式)
结果中的PID指的是本进程的ID;PPID指的是父进程的ID查看进程树
pstree查看进程树-p显示进程ID-u显示进程的所属用户
终止进程
kill 进程号,如:kill 9416-9: 表示强迫进程立即停止
killall 进程名 可以杀多个进程,支持通配符。如:killall gedit
服务管理
服务本身就是一个进程,它们通常运行在后台,监听某个端口,等待其它程序的请求,因此,又可以称值为守护进程。
service命令
service指令是控制系统服务的工具。
用法:service 服务名 [start | stop | restart | reload | status],如 service network status
注意:centos7之后服务一般由systemctl管理, service继续管理的服务在/etc/init.d/下可以看到
设置服务启动
查看自启动服务有哪些
输入setup 命令,然后选择“系统服务”。其中,*表示自启动
开机流程:开机 -> BIOS -> /boot -> systemd进程1 -> 运行级别 -> 运行相对应的服务
上面的setup有设置自启动的功能,linux还有一个命令可以根据系统运行级别来配置一个服务是否自启动。
为了管理不同运行级别下的自启动服务,Red Hat公司开发了chkconfig命令,用于检查或设置系统的各种服务。
- 查看服务:
chkconfig --list - 设置服务:
chkconfig --level 服务级别 服务名 on/off- 如:
chkconfig --level 5 network on, 表示:在5运行级别下打开network服务
- 如:
和
service一样,centos7之后使用systemctl管理,chkconfig继续管理服务的在/etc/init.d/下可以看到
设置完之后,需要重启后才能生效。
systemctl命令
systemctl命令是一个系统服务管理器指令,它实际上将 service 和 chkconfig 这两个命令组合到了一起。systemctl可以管理的服务在/usr/lib/systemd/system/目录下。
服务管理:
- 查询状态
systemctl status 服务名, 如:systemctl status firewalld - 关闭服务
systemctl stop 服务名, 如:systemctl stop firewalld - 打开服务
systemctl start 服务名, 如:systemctl start firewalld
注意:启动或关闭服务只是临时的,要保存的话,需要设置开机启动状态(enable/disable),如下
自启动管理(3和5级别):
- 查看服务开机启动状态
systemctl list-unit-files,要查询某个具体的服务时,使用grep - 设置开机启动
systemctl enable/disable 服务名 - 查询服务是否开机启动
systemctl is-enabled 服务名
firewall 防火墙管理
查询 firewall-cmd --query-port=端口/协议
打开端口 firewall-cmd --permanent --add-port=端口/协议
关闭端口 firewall-cmd --permanent --remove-port=端口/协议
注意打开或关闭端口后,需要重新载入才能生效:firewall-cmd --reload
动态监控进程
top和ps命令相似,不同的是top命令会每隔一段时间更新一次,是动态的。top的选项:
-d 秒数:每隔几秒更新,默认3秒-i:不显示限制/僵死进程-p:进程ID 监控某个进程的状态
进入top后的按键:
P 以cpu排序,默认是这个
M 以内存排序
N 以pid排序
k 结束某个进程,输入进程号和信号量即可(强制退出的信号量为9)
q 退出top
软件包管理
RPM
rpm是RedHat Package Manager的缩写,用于互联网打包和安装工具,生成有.rpm扩展名的文件。
rpm查询
显示已安装rpm -qa
查询是否安装rpm -qa | grep 包名
或者rpm -q 包名
如:rpm -qa | grep firefox或rpm -q firefox
返回:firefox-60.2.2-1.el7.centos.x86_64
这段文字代表的意思:
firefox: 软件包的名称
60.2.2-1: 版本号
el7.centos.x86_64: 使用操作系统
- el7是Red Hat 7.x,CentOS 7.x和CloudLinux 7.x的下载。其他的如:el6、el8等以此类推。
x86_64:64位系统
假如是:
- i386/i686表示32位系统(i686是i386的一个子集,仅对应P6及以上级别的CPU,i386则广泛适用于80386以上的各种CPU)
- noarch表示通用
查询软件包信息rpm -qi 包名,如:rpm -qi firefox
查询软件包的文件rpm -ql 包名,如:rpm -ql firefox
查询文件所属软件包rpm -qf 路径,如:rpm -qf /etc/passwd
使用rpm安装
rpm -ivh 软件包的路径(-i 安装; -v 提示; -h 进度条)
rpm卸载包
rpm -e 包名
假如提示有依赖关系的话,建议不要卸载,当然也可以带上--nodeps强制卸载。
YUM
yum是一个基于rpm的shell前端软件管理器,可以从指定服务器中下载rpm包并且安装,不再需要个rpm一样需要提前把包下载到本地,而且yum还能自动处理依赖关系。
yum包查询
yum list | grep 包名 查询服务器是否有需要安装的软件 如:yum list | grep firefoxyum list installed | grep 包名 查询本地是否已经安装 如:yum list installed | grep firefox
yum安装/更新包
yum install 包名 安装指定yum包, 如:yum install firefoxyum update 全部更新yum check-update 检查可更新的程序yum update 包名 更新指定软件,如yum updata firefox
yum卸载包
yum remove 包名 删除指定的rpm软件包;如:yum remove firefox
yum清除缓存
yum clean packages 清除缓存目录下的软件包yum clean headers 清除缓存目录下的 headersyum clean oldheaders 清除缓存目录下旧的 headers
APT
apt是apt advanced packaging tool简称,是Debian Linux发行版中的APT软件包管理工具。所有基于Debian的发行都使用这个包管理系统。deb包可以把一个应用的文件包在一起,大体就如同Windows上的安装文件。
apt安装包
注意:通常在安装软件前,通常需要运行sudo apt update获取的最新的软件包列表,以确保您的软件包列表是最新的。sudo apt install 包名
apt卸载包
sudo apt remove 包名
apt其他命令
sudo apt serch 包名 搜索应用程序sudo apt show package 获取包信息sudo apt source package 下载包的源代码到当前目录sudo apt install package --reinstall 重新安装包sudo apt upgrade 升级所有可升级的软件包sudo apt full-upgrade 在升级软件包时自动处理依赖关系sudo apt dist-upgrade 更新包,根据依赖关系的变化,添加包,删除包sudo apt purge 删除包,包括配置文件等sudo apt build-dep package 安装相关的编译环境,如:sudo apt build-dep apache2sudo apt autoremove 自动删除不需要的包sudo apt depends package 了解使用该包的依赖包
apt修改源
由于一些linux发行版(如:Ubuntu)的apt源通常是外国的,所以导致安装或更新软件时很慢,通常我们需要修改镜像源地址。
一些常用的镜像源,点击查看
步骤:
- 备份源地址
cp /etc/apt/sources.list /etc/apt/sources.list.bak - 修改文件
/etc/apt/sources.list - 获取的最新的软件包列表
sudo apt update
符号
~当前用户的家目录>和>>
>输出重定向 (里面有东西会被覆盖)
>>追加$echo "hello" >> res.txt # "hello"z追加到res.txt文件 $cal > cal.txt # 把cal输出的内容覆盖的cal.txt $cat a.txt >> temp.txt # 将a.txt内容追加到temp.txt$使用变量.和..当前目录和当前目录的父目录
其他
| 命令 | 说明 | 备注 |
|---|---|---|
history |
查看已经执行的历史指令(包括注释) | 加数字n,显示最近的第n条记录。如:history 10。!5: 执行已经执行过的编号为5指令 |