--[实操篇]
常用基本命令
Shell可以看做是一个命令解释器,为我们提供了交互式的文本控制台界面。
我们可以通过终端控制台输入命令,有shell进行解释并最终交给内核执行。
--BASH(Bourne Again Shell) --sh shell解释器的入口
ls -l /bin/ | grep sh
-----------------------------------------------------
[帮助命令]
-----------------------------------------------------
基本语法:man [命令或配置文件] --获得帮助信息
man ls --(F向下翻/B向下翻/space向下翻)
q --退出
man cd
[help获取shell内置命令的帮助信息]
一部分基础功能的系统命令是直接内嵌在shell中的,系统加载启动后会随着shell
一起加载,常驻系统内存中。这部分命令称为"内置(built-in)命令";相应的其他命令被
称为"外部命令"
help cd --获得shell内置命令的帮助信息
type cd --查看命令类型
type exit
type useradd
type history
history --之前敲过的所有命令
man -f cd
man 1p cd
man 3 cd
man man
基本语法:help 命令 --获得shell内置命令的帮助信息
help cd --内置命令
ls --help --外部命令
[shell常用的快捷键]
ctrl+c --停止进程
ctrl+l --清屏,等于clear; 彻底清屏是:reset
tab --提示(更重要的是可以复制敲错)
上下键 --查看执行过的命令
-----------------------------------------------------
[文件目录类]
-----------------------------------------------------
--pwd
[pwd 显示当前工作目录的绝对路径]print working directory 打印工作目录
基本语法:pwd --显示当前工作目录的绝对路径
--cd
[cd 切换路径]
cd /etc/sysconfig/network-scripts/
pwd
type pwd --内置命令
基本语法:cd --
相对路径 cd ../ --上一级目录
绝对路径 cd / --绝对路径以/开头
cd - --返回上次所在的目录
cd --回到主文件夹
su 用户名--切换用户
--ls
[ls 列举出当前目录的内容或文件] list
ls
ls -a --all 全部的文件,连同隐藏挡(开头为.的文件)一起列出
cd .. --返回上级目录
cd - --上次目录
cd . --当前目录
文件名: .cshrc --隐藏的文件
ls -l --昌数据串列出,包含文件的数下与权限等等数据;等于 ll
ll
ls -al
--mkdir
[mkdir 创建一个新的目录]
基本语法:mkdir 要创建的目录
mkdir a
mkdir /a --在根目录下创建
ls /
mkdir b c --创建b,c文件夹
mkdir c c/d--创建c文件夹,在c文件夹中创建d文件夹
mkdir -p g/h/i--连续创建文件夹
--rmdir
[rmdir 删除一个空的目录]
基本语法:rmdir 要删除的空目录
rmdir d --删除d文件夹
rmdir d/e/f d/e /d--嵌套删除文件夹
rmdir -p g/h/i --连续删除文件夹
--touch
[touch 创建空文件]
touch hello --创建hello的文件
touch /root/a/b/hello--绝对路径创建
vim hello4 --创建文件(如果文件没内容,就没法创建)
--cp
[cp 复制文件或目录]
cp[选项] source dest
source --源文件
dest --目标文件
cp hello /root/a--如果复制到目标文件一样,会覆盖掉原文件的内容
\cp hello /root/a--没有出现覆盖提示,强制覆盖 --linux原生命令
alias --别名
cp -r a/ home/a --递归复制整个文件夹
--rm
基本语法:rm[选项]deleteFile
[rm 递归删除目录中的所有内容]
rm -f --强制执行删除,没有提示
rm -r --递归删除目录中的所有内容
rm -v --显示指令的详细执行过程
rm -rf --强制递归删除目录中的所有内容(rm -rf /* 不能随便用)
rm -f ./*
--mv
基本语法:mv oldNameFile newNameFile --重命名
mv /temp/movefile /targetFolder --移动文件
[mv 移动文件与目录或重命名]
mv /b /d/1.cfg --移动并重命名
mv 1.cfg 2.cfg --重命名
--cat
[cat 查看文件内容,从第一行开始显示] --catch
cat hello --显示hello文件内容
cat -n hello --显示hello文件的内容,并加上行号
--more
[more 文件内容分屏查看器]
基本语法:more 要查看的文件
= --显示第几行
:f --显示文件的第几行
q --退出
--less
[less 分屏显示文件内容]
基本语法:less 要查看的文件
less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强
大,支持各种显示终端.less指令在显示文件内容时,并不是一次将整个文件加载之后才显
示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率.
g --回到开头
G --到结束
/hello --搜索关键字hello --n:向下查找 --N:向上查找
q --退出
-echo
[echo 输出内容到控制台]
基本语法:echo[选项][输出内容]
echo "hello world"
echo -e "hello\nworld" --支持反斜线控制的字符转换 \\:输出本身 \n:换行符 \t:制表符,也就是Tab键
-- >输出重定向 和 >>追加
基本语法:
(1)ls -l > 文件 --列表的内容写入文件a.txt中(覆盖写)
(2)ls -al>>文件 --列表的内容追加到文件aa.txt的末尾
(3)cat 文件1>文件2 --将文件1的内容覆盖到文件2
(4)echo"内容">>文件
ll>info
ls>info
cat info
echo "hello,linux">>info
echo $ --查看环境变量,输入后加个Tab
echo $PATH --显示环境变量
echo $HOSTNAME>>info --追加
--head
[head 显示文件头部内容]
基本语法:
(1)head 文件 --查看文件头10行内容
(2)head -n 5 文件 --查看文件头5行内容
--tail
[tail 输出文件尾部内容]
基本语法:
(1)tail 文件 --查看文件尾部10行内容
(2)tail -n 5 文件 --查看文件尾部5行内容
(3)tail -f 文件 --实时追踪该文档的所有更新 follow
tail -f info --监控info文件(监控是根据文件索引号监控的,若文件修改了,inode也会改变,但监控还是原来的inode)
ctrl+s --暂停
ctrl+q --继续
ctrl+c --退出
ls -i info --查看info文件的索引号 index inode
--ln
[ln 软链接] --类似于指针
基本语法:ln -s [原文件或目录]{软链接名}
软链接也称为符号链接,类似与windows里的快捷方式,有自己的数据块,主要存
放了链接其他文件的路径.
ln -s /root/a/info myInfo --创建软链接
vim myInfo
mkdir folder
touch folder/file
ln -s /root/floder/ /home/a/myFolder
pwd -P --显示真正的实际路径
cd -P /home/a/myFolder --进入正真的实际目录
rm myInfo
rm -rf myInfo --删除软链接文件
rm -rf myInfo/ --删除真实目录下的文件
ln 文件名 链接名 --创建硬链接
--history
[history 查看已经执行过历史命令]
history 10\ --显示最近执行过的10条命令
!199 --对应当前历史命令的编号
history -c --清空历史命令
-----------------------------------------------------
[时间日期类]
-----------------------------------------------------
基本语法:date [OPTION]...[+FORMAT]
date --显示当前时间
date +%Y --显示当前年份
date +%y
date +%m --显示当前月份
date +%d --显示当前是哪一天
date "+%Y-%m-%d %H:%M:%S" --显示年月日时分秒
date +%s --当前秒数对于的时间戳
date -d '1 days ago' --显示前一天时间
date -d '-1 days ago' --显示明天时间
date -d '-1 hours ago'
date -s --设置系统时间
date -s "2024-3-31 16:39:39"
ntpdate --联网更新时间
--cal
[cal 查看日历]
cal --获取当天所在月份的日历
cal -3 --显示最近3个月的日历
cal -m --把周一放前面
cal 2022--显示2022的所有日历
cal -y --显示当前系统所在年的所有日历
-----------------------------------------------------
[用户管理类]
-----------------------------------------------------
--useradd
[useradd 添加新用户]
基本语法:useradd 用户名 --添加新用户
useradd -g 组名 用户名 --添加新用户到某个组
cd /home/
useradd tony
useradd -d /home/dave david --创建david用户,在dave文件夹
passwd tony --为tony用户设置密码
passwd david
exit
id tony --检验用户是否存在
less /etc/passwd --查看创建了哪些用户
su tony --switch user 切换用户
cd ~ --跳转到主目录
who am i --显示原始用户
whoami --当前用户的名称
-----------------------------------------------------
[用户权限类]
-----------------------------------------------------
--sudo
[sudo 设置普通用户具有root权限]
su tony
ls
sudo ls
vim /etc/sudoers --用户权限文件
+ - - + - - - - - + - - +
|root | ALL=(ALL) | ALL |
+ - - + - - - - - + - - +
|tony | ALL=(ALL) | ALL |
+ - - + - - - - - + - - +
yy
p
:wq!
su tony
sudo ls --临时获取到超级管理员的权限
userdel tony --删除tony用户
rm -rf tony/ --一般最好不要删,留着文件
userdel -r david --直接删除用户及文件
cat /etc/passwd --查看用户
--groupadd
[groupadd 新增组]
基本语法:groupadd 组名
id tony
id root
sudo cat /etc/group --查看用户组
groupadd PL --新建一个PL的组
--usermod
[usermod 修改用户]
基本语法:usermod -g 用户组 用户名
usermod -g PL tony
id tony
groupmod -n INV PL --修改组名(新用户名 旧用户名)
groupdel tony --删除用户组
id atguigu --(wheel)类似于管理员
vim /etc/sudoers
+ - - + - - - - - + - - +
%wheel ALL=(ALL) ALL
+ - - + - - - - - + - - +
%wheel ALL=(ALL) NOPASSWD:ALL --加了NOPASSWD就不用再验证密码才执行命令
-----------------------------------------------------
[文件权限类]
-----------------------------------------------------
ll
-rw-------.1 --文件,1表示硬链接数;如果是文件夹,指的是子文件夹数
drwxr-xr-x. --文件夹
c --字符类型的设备文件
b --跨设备文件(硬盘)
l --链接(link file)
ls /dev/ --设备目录
d rwx r-x r-x.
文件类型 属主权限(User) 属组权限(Group) 其他用户权限(Other)
(1)作用到文件:
r --读 read,可以读取,查看
w --写 write,可以修改,但不代表可以删除(除非对该文件所在目录有写权限)
x --执行 execute,可以被系统执行
(2)作用到目录:
r --读 read,可以读取,ls查看目录内容
w --写 write,可以修改,目录内创建+删除+重命名目录
x --执行 execute,可以进入该目录,cd
cp ./anaconda-ks.cfg /home/atguigu
cp ./initial-setup-ks.cfg /home/atguigu
su atguigu
cd ~
ll
cat initial-setup-ks.cfg
cat anaconda-ks.cfg
--chmod
[chmod 改变权限]
基本语法:
(1)chmod [{ugoa}{+-=}{rwx}]文件或目录
(2)chmod [mode=421][文件或目录]
chmod u+x initial-setup-ks.cfg
ll
chmod g+w initial-setup-ks.cfg
chmod a=rw initial-setup-ks.cfg --所有都改为rw
r=4
w=2
x=1
rwx=4+2+1=7
1 --x
2 --w
3 --wx
4 --r
5 --rx
6 --rw
7 --rwx
chmod 777 a --开通所有权限
chmod 644 a
su atguigu
cd /home/atguigu
chmod -R 777 xiyou --把这个文件夹里面的所有目录和文件都开通全部权限
--chown
{chown 改变所有者}
基本语法:chown [选项][最终用户][文件或目录] --改变文件或目录的所有者
chown -R 文件名--递归操作
chown atguigu initial-setup-ks.cfg
--chgrg
[chgrp 改变所属组]
基本语法:chgrp[最终用户组][文件或目录] --改变文件或目录的所属组
chgrp INV initial-setup-ks.cfg
--分场景操操作
bigdata testing
groupadd bigdata --创建大数据用户组
groupadd testing --创建测试用户组
cat /etc/group --查看用户组是否创建
useradd -g testing xiaohong --新入职的小红
useradd -g testing xiaolan --新入职的小蓝
useradd -g bigdata xiaoming
id xiaoming
useradd -g bigdata xiaoliang
cd /home
ls
su xiaoming
pwd
cd ~
vim import_code --小明创建了一个文件
su xiaoliang
cd ~
ll
cd ../xiaoming/
cd /home
chmod g+x xiaoming/
chmod g+r xiaoming
chmod g+w import_code
cd xiaoming/
vim import_code
usermod -g bigdata xiaolan --小蓝更改为大数据组
--find
[find 查找文件或目录]
基本语法:find[搜索范围][选项]
-name --按照指定的文件名查找模式查找文件
-user<用户名> --查找属于指定用户名所有文件
-size<文件大小> --按照指定的文件大小查找文件,
单位: b --块(512字节)
c --字节
w --字(2字节)
k --千字节
M --兆字节
G --吉字节
find ./ -name a --查找a的文件
touch /home/info --创建info文件
find -name info
find /root -name info
find /root -name "*.cfg" --找到.cfg结尾的文件
find /home -user tony
ls -lh
find /root -size +10M --找出大于10兆的文件
--locate
[locate 快速定位文件路径]
基本语法:locate 搜索文件 --在数据库查找,速度特别快,但数据库每天只更新一次
updatedb --先更新数据库,保持数据准确
locate tmp
which ls --查找命令在哪里
whereis locate
--grep
{grep 过滤查找及"|"管道符}
基本语法:grep 选项 查找内容 源文件
-n --显示匹配行及行号
grep -n boot initial-setup-ks.cfg --查找boot关键字在文件的哪里
ls | grep .cfg
wc --word count;统计词数
wc info
8 8 48 info
行数 单词数量 字节数 文件名
grep -n boot initial-setup-ks.cfg | wc
--gzip/gunzip
[gzip/gunzip 压缩和解压类]
基本语法:
gzip 文件 --压缩文件,只能将文件压缩为*.gz文件
gunzip 文件.gz --解压缩文件命令
经验技巧:
(1)只能压缩文件不能压缩目录
(2)不保留原来的文件
(3)同时多个文件会产生多个压缩包
gzip xzhdx.txt --压缩xzhdx.txt文件
ls -lh
gunzip xzhdx.txt.gz --解压xzhdx.txt.gz文件
--zip/unzip
[zip/unzip 压缩/解压]
基本语法:
zip [选项] XXX.zip --压缩文件和目录的命令
unzip [选项] XXX.zip --解压文件
-r --递归的压缩
-d<目录> --指定解压后文件的存放目录
zip -r myroot.zip b --压缩文件夹b为 myroot.zip --兼具打包和压缩的功能
unzip -d ziptest myroot.zip --解压文件myroot.zip到ziptest目录
--tar
[tar 打包]
基本语法:tar[选项] XXX.tar.gz --将要打包进去的内容
-c --产生.tar打包文件
-v --显示详细信息
-f --指定压缩后的文件名 --一般放最后一个参数
-z --打包同时压缩
-x --解包.tar文件
-C --解压到指定目录
tar -zcvf temp.tar.gz initial-setup-ks.cfg myroot.zip --打包并压缩两个文件为temp.tar.gz
tar -zxvf temp.tar.gz -C ziptest --把temp.tar.gz解压到ziptest文件夹中
[磁盘管理类]
ls
ll
ls -lh
yum install tree --安装tree工具
systemctl stop packagekit.service --若无法下载,关闭PackageKit服务
killall -9 packagekitd --杀死PackageKit进程;如果关闭PackageKit服务不起作用
说明:PackageKit是一个在Linux系统上用于软件包管理的守护进程(daemon)。
它提供了一种统一的接口,用于管理和安装软件包,以及执行软件包更新和升级。
PackageKit通常与特定的软件包管理工具(如Yum、DNF、APT等)结合使用。
--du
[du 查看文件和目录占用的磁盘空间] --disk usage
基本语法:du 目录/文件 --显示目录下每个子目录的磁盘使用情况
-h --以GBytes,MBytes,KBytes等格式自行显示;
-a --不仅查看子目录大小,还要包括文件 --all
-c --显示所有的文件和子目录大小后,显示总和
-s --只显示总和
--max-depth=n --指定统计子目录的深度为n层
du
du -ah
du -c
du -sh --直接查看当前目录占磁盘空间的大小
du --max-depth=1 -ah
+ - - - + - - - + - - - +
/boot swap /
+ - - - + - - - + - - - +
1G 4G 45G
+ - - - + - - - + - - - +
--df
[df 查看磁盘空间使用情况] --disk free 空余磁盘
基本语法:df 选项 --列出文件系统的整体磁盘使用率,检查文件系统的磁盘空间占用情况
-h --以GBytes,MBytes,KBytes等格式自行显示;
+ - - - - - + - - - + - - - + - - - + - - - + - - - +
文件系统 容量 已用 可用 已用% 挂载点
+ - - - - - + - - - + - - - + - - - + - - - + - - - +
/dev/sda3 42G 4.7G 38G 12% / --3指挂载到/下45G那里
+ - - - - - + - - - + - - - + - - - + - - - + - - - +
tmpfs --对应内存或swap
shm --shared memory
free -h --查看内存
--lsblk
[lsblk 查看设备挂载情况]
基本语法:
lsblk --查看设备挂载情况
-f --显示文件系统的相关信息
lsblk
disk --硬盘
ls /dev/ | grep sro
sda --SATA硬盘--常用,容量大 / SCSI硬盘--小型,服务器
sda1 --第一块分区
hda --IDE硬盘--传统
hdb2 --第二块硬盘的第二个分区
vda --虚拟化模拟设备
+ - - + - - + - - + - - + - - - - - +
NAME FSTYPE LABEL UUID MOUNTPOINT
+ - - + - - + - - + - - + - - - - - +
--mount/umount
[mount/umount 挂载/卸载]
基本语法:mount [-t vfstype] [-o option] device dir --挂载设备
unmount 设备文件名或挂载点 --卸载设备
--对虚拟机做一些镜像配置
虚拟机右击》设置》CD/DVD》使用ISO映像文件》已连接
lsblk
rom /run/media/root/CentOS7 x86_64 --默认挂载点
ls /run/media/root/CentOS7 x86_64
弹出光盘 --尝试手动挂载
参数-t vfstype --指定文件系统的类型,通常不必指定.mount会自动选择正确的类
vfstype:
iso9660 --光盘或光盘镜像
msdos --DOS fat16文件系统
vfat --Windows 9x fat32 文件系统
ntfs --Windows NT ntfs 文件系统
smbfs --Mount Windows 文件网络共享
nfs --UNIX(LINUX) 文件网络共享
-o options: --主要用来描述设备或档案的挂接方式
loop --用来把一个文件当成硬盘分区挂接上系统
ro --采用只读方式挂载设备
rw --采用读写方式挂载设备
iocharset--指定访问文件系统所有字符集
device --要挂接(mount)的设备
dir --设备在系统上的挂接点(mount point)
mkdir /mnt/cdrom
mount /dev/cdrom /mnt/cdrom/ --显示: mount: 在 /dev/sr0 上找不到媒体
注销》右击光盘设置》已连接
mount /dev/cdrom /mnt/cdrom/
ls /mnt/cdrom
umount /dev/cdrom --卸载设备
ls /mnt/cdrom
--设置开机自动挂载 表示文件系统检查的优先级(0表示不检查)
vim /ect/fstab |
+ - - - - - -- - - - - - - - - - - - - - + - - + - - + - - - - - + - - - + - - +
UUID=527aee22-24a8-4248-b47b-18fca35523ee / xfs defaults 0 0
+ - - - - - -- - - - - - - - - - - - - - + - - + - - + - - - - - + - - - + - - +
|
kdump(0表示不备份/1表示备份)
添加如下命令:
+ - - - - - -- - - - - - - - - - - - - - + - - - - + - - - - + - - - - - + - - - + - - +
/dev/cdrom /mnt/cdrom iso9660 defaults 0 0
+ - - - - - -- - - - - - - - - - - - - - + - - - - + - - - - + - - - - - + - - - + - - +
--fsck --检查和修复当前文件系统的命令(根据优先级设定)
:wq!
--fdisk
[fdisk 分区] --必须在root用户下才能使用
基本语法:
fdisk -l --查看磁盘分区情况(l表示显示所有硬盘的分区列表)
fdisk 硬盘设备名 --对新增硬盘进行分区操纵
+ - - - - - + - - + - - - - - + - - - - - + - - - - - + - - + - - - - - - - - - - - +
设备 Boot Start End Blocks Id System
+ - - - - - + - - + - - - - - + - - - - - + - - - - - + - - + - - - - - - - - - - - +
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 10098687 3999744 82 Linux swap / Solaris
/dev/sda3 10098688 97988607 43944960 83 Linux
+ - - - - - + - - + - - - - - + - - - - - + - - - - - + - - + - - - - - - - - - - - +
Boot的*表示是否是当前的启动分区(是)
Blocks --表示当前分区的容量大小
Id --分区类型的Id
System --分区系统的类型
--如果多了一块新硬盘,该如何操作?
设置》硬盘(SCSI)》添加》硬盘》下一步》创建新虚拟磁盘》下一步》20G》名称》完成
fdisk -l
lsblk
reboot --重启才会显示硬盘信息
fdisk /dev/sdb --挂接硬盘
m --命令(输入 m 获取帮助):m
q --退出
n --开始分区
(最多分4个主分区;如果再多,把最后一个分区替换成ext扩展分区,那就可以扩展出若干个逻辑分区,但已不是真正的物理分区)
(ext扩展分区最多有16个) --例如 sdb1 ~ sdb16
p --子分区
1 --分区号 (1-4,默认 1)
2048 --起始 扇区 (2048-41943039,默认为 2048)
41943039 --Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039)
w --保存退出
lsblk -f
+ - - - - - - - - - - - - - - - - - - - - - +
命令操作
+ - - - - - - - - - - - - - - - - - - - - - +
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)
+ - - - - - - - - - - - - - - - - - - - - - +
mkfs -t xfs /dev/sdb1 --对分区进行格式化
mount /dev/sdb1 /home/atguigu/ --挂载到atguigu目录下
df -h
cp myroot.zip /home/atguigu/
df -h
umount /home/atguigu --卸载设备
lsblk --还能识别出了,但已经被卸载了
ll /home/atguigu/
[进程管理类]
ls /usr/lib/systemd/system
XXX.target --一组服务的集合
process:
(1)前台
(2)后台(守护进程) d.service
ls /usr/lib/systemd/system | grep d.service
--ps
[ps 查看当前系统进程状态] --process status 进程状态
基本语法:
ps aux | grep xxx --查看系统中所有进程
ps -ef | grep xxx --可以查看子父进程之间的关系
+ - - + - - - - - - - - - - - - - - - +
选项 功能
+ - - + - - - - - - - - - - - - - - - +
a 列出带有终端的所有用户的进程
x 列出当前用户的所有进程,包括没有终端的进程
u 面向用户友好的显示风格
-e 列出所有进程
-u 列出某个用户关联的所有进程
-f 显示完整格式的进程列表
+ - - + - - - - - - - - - - - - - - - +
ps aux | less
ps -ef
PPID --父进程ID
ps -aux --默认先查询x用户(不建议这样写)
USER:该进程是有哪个用户产生的
PID: 进程的ID号
%CPU:该进程占用CPU资源的百分比,占用越高,进程月耗费资源;
%MEM:该进程占用物理内存的百分比,占用越高,进程月耗费资源; --memory
VSZ: 该进程占用虚拟内存的大小,单位KB;
RSS: 该进程占用实际物理内存的大小,单位KB;
TTY: 该进程是在哪个终端中运行的.对于CentOS来说,tty1是图形化终端
tty2-tty6是本地的字符界面终端.pts/0-255代表虚拟终端.
STAT:进程状态.常见的状态有:R:运行状态
S:睡眠状态
T:暂停状态
Z:僵尸状态
s:包含子进程
l:多线程
+:前台显示
<:优先级较高
N:优先级较低
START:该进程的启动时间
COMMAND:命令
TIME:CPU时间
ps -ef | grep sshd
systemctl status sshd
--kill
[kill 终止进程]
基本语法:
kill [选项]进程号 --通过进程号杀死进程
killall 进程名称 --通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢是有用
-9 --表示强迫进程立即停止
ps -ef | grep sshd
+ - - - + - - - + - - + - + - + - - + - - - - - - - - - - - - - - - - - +
root 1059 1 0 4月02 ? 00:00:00 /usr/sbin/sshd -D
root 1143 1059 0 4月02 ? 00:00:00 sshd: root@pts/0
root 4100 1059 4 01:30 ? 00:00:00 sshd: atguigu [priv]
atguigu 4104 4100 0 01:30 ? 00:00:00 sshd: atguigu@pts/1
root 4157 1807 0 01:30 pts/0 00:00:00 grep --color=auto sshd
+ - - - + - - - + - - + - + - + - - + - - - - - - - - - - - - - - - - - +
kill 4104
kill 1059 --杀掉后台守护进程后,其他用户无法登录
systemctl status sshd
systemctl start sshd
ps -ef | grep bash
kill -l
kill -9 1059
killall sshd --杀死所有sshd进程--杀掉就只能去机房开启
systemctl start sshd
--pstree
[pstree 查看进程树]
基本语法:
yum install pstree
pstree [选项]
-p --显示进程的PID
-u --显示进程的所属用户
pstree | less
pstree -p | less
pstree -u | less
--top
[top 实时监控系统进程状态]
基本语法:top [选项]
选项:
-d 秒数 --指定top命令每隔几秒更新.默认是3秒在top命令的交互模式当中可以执行的命令;
-i --使用top不显示任何闲置或者僵死进程
-p --通过指定监控进程ID来仅仅监控某个进程的状态
操作说明:
P --以CPU使用率排序,默认就是此项
M --以内存使用率排序
N --以PID排序
q --退出top
top
top --程序名称
00:18:00 --当前时间
up 14 min --系统启动运行后到现在的时间
1 user --当前正在登录使用的用户数
load average: 0.00, 0.03, 0.05 --当前的平均负载(过去的1min 5min 15min)少于0.7就比较少,大于1就超过系统负载
Tasks: 206 total--正在运行的程序
1 running --R状态
205 sleeping --S状态
0 stopped --T状态
0 zombie --Z状态
%Cpu(s): 0.0 us --用户进程占用CPU的时间
0.0 sy --系统进程
0.0 ni --nice命令,给进程指定优先级,越友善,优先级越低
99.9 id--idle 空闲
0.0 wa --wait 等待IO操作
0.0 hi --硬中断服务请求时间占比
0.0 si --软中断服务请求时间占比
0.0 st --被虚拟机占用的时间占比
KiB Mem : 4026160 total --内存占用情况
3125424 free --空闲
550896 used --占用
349840 buff/cache--缓存里
KiB Swap: 3999740 total --虚拟内存占用情况
3999740 free
0 used
3235624 avail Mem
PID --当前进程编号
USER --哪个用户调用的进程
PR --当前任务调度优先级
NI --当前进程调度用户指定的nice值
VIRT --虚拟内存占用大小
RES --实际物理内存占用大小
SHR --共享内存占用大小
S --当前状态
%CPU --当前进程CPU计算时间的占比
%MEM --内存占比
TIME+ --当前运行的时间,已经占用CPU的总时间
COMMAND --当前进程的命令
默认按CPU占用排序
shift+m --按内存占用大小排序
shift+p --按CPU占用大小排序
shift+n --进程号从大到小去对比
q --退出
top -d
top -i
top -p 2255
top -d 1
u --监控用户
atguigu --输入需要监控的用户
k --根据PID杀死进程
4950 --杀死的进程号
--netstat
[netstat 显示网络状态和端口占用信息]
基本语法:
netstat -anp | grep 进程号 --查看该进程的网络信息
netstat -nlp | grep 端口号 --查看网络端口号占用情况
选项:
-a --显示所有正在监听(listen)和未监听的套接字(socket)
-n --拒绝显示别名,能显示数字的全部转行成数字
-l --仅列出在监听的服务状态
-p --表示显示哪个进程在调用
ifconfig
ping xxx
socket --网络传输开的门
[例如:192.168.111.1:20 --20就是socket]
hostname hadoop
ip 192.168.111.1
port 0~65536
ssh 22端口
浏览器 80
MySQL 3306端口
netstat -anp | less
Proto --当前的协议
Recv-Q --连接到当前socket用户程序还没有拷贝的字节数
Send-Q --已经发出去当远程主机还没有确认收到的字节数
Local Address --本机地址
0.0.0.0 --本机本地的所有地址
102.168.111.100 --局域网的地址
192.168.122.1 --虚拟网络的地址
127.0.0.1 --本地回环地址,等于local host
Foreign Address--远程地址
192.168.111.1
State --网络连接状态
PID/Program name --进程号/程序名称
--crontab
[crontab 系统定时任务]
基本语法:crontab [选项]
选项说明:
-e --编辑crontab定时任务
-l --查询crontab任务
-r --删除当前用户所有的crontab任务
systemctl restart crond --重启crond服务
systemctl status crond --查看crond状态
crontab -l
crontab -e
<进入crontab编辑界面> --会打开vim编辑你的工作
*****执行任务
+ — - - - + - - - - - - - - - - - + - - - - - +
项目 含义 范围
+ — - - - + - - - - - - - - - - - + - - - - - +
第一个'*' 一小时当中的第几分钟 0-59
第二个'*' 一天当中的第几小时 0-23
第三个'*' 一个月当中的第几天 1-31
第四个'*' 一年当中的第几月 1-12
第五个'*' 一周当中的星期几 0-7(0和7都代表星期日)
+ — - - - + - - - - - - - - - - - + - - - - - +
特殊符号
+ - - - - + - - - - - - - - - - - - - - - - - - - - - +
特殊符号 含义
+ - - - - + - - - - - - - - - - - - - - - - - - - - - +
* 代表任何时间.比如第一个'*'就代表一个小时中每分钟都执行一次的意思.
, 代表不连续的时间.比如"0 8,12,16 ***命令",就代表在每天的8点0分,12点0分,16点0分都执行一次命令
- 代表连续的时间范围.比如"0 5 ** 1-6命令",代表在周一到周六的凌晨5点0分执行命令
*/n 代表每隔多久执行一次.比如"*/10 ****命令",代表每隔10分钟就执行一遍命令
+ - - - - + - - - - - - - - - - - - - - - - - - - - - +
+ - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - +
时间 含义
+ - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - +
45 22 ***命令 每天22点45分执行命令
0 17 ** 1命令 每周1的17点0分执行命令
0 5 1,15**命令 每月1号和15号的凌晨5点0分
40 4**1-5命令 每周一到周五的凌晨4点40分
*/10 4***命令 每天的凌晨4点,每隔10分钟执行一次
0 0 1,15*1命令 每月1号和15号,每周1的0点0分都会执行命令.
注意:星期几和几号最好不要同时出现,因为他们定义的都是天.非常容易让管理员混乱.
+ - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - +
*/1 * * * * echo "hello,world">>/root/hello
cat hello
tail -f hello
crontab -l
crontab -r --清理掉当前用户的定时任务
Linux实操篇(重点)
于 2024-04-08 12:41:49 首次发布