linux命令总结

2022-03-22  本文已影响0人  三省吾身_9862

安装VMware

安装centos

安装xshell + xftp,连接centos

// centos 命令行输入,查看centos系统ip地址
ifconfig
// window系统命令行输入,ping下 centosip地址。看是否能通
ping 192.168.0.5

vi和vim编辑器

  1. 三种模式: 正常(一般)模式、插入(编辑)模式、命令模式;注意 ‘命令行下’ 和 ‘命令模式’,不是同一个意思


    image.png

    正常模式下

yy 复制当前行,5yy复制当前行向下的5行  
p 粘贴
dd 删除当前行, 5dd 删除当前行向下的5行
G 最后一行
gg 第一行
u 撤销上一步操作
定位到具体20行 20 shift+g

输入/ 查询的字符, n 查找下一个;再输入/,重新查找其他字符

设置行号 :set nu
取消行号:set nonu

关机&重启

image.png

用户登录和注销

su - 用户名    进入用户(在用户链末尾,增加一个用户)
logout 退出登录(在用户链末尾,弹出一个用户)
用户链

用户管理

  1. 添加删除用户
useradd milan // 增加milan用户,并且增加文件夹 /home/milan
useradd -d /home/tst king 增加king用户,并且指定增加文件夹 /home/tst

passwd 用户名 // 一定要加用户名,不加,是给当前使用系统的用户,设置密码
userdel milan // 删除milan
userdel -r milan // 删除milan,并且删除  /home/milan 目录
id 用户名// 查看用户信息;例如:id root
who am i // 查看当前登录linux用户信息,不是使用的用户信息
  1. 用户组
groupadd wd // 添加组wd
groupdel wd // 删除组wd
// 如果添加用户,没有指定组,系统自动生成一个和用户名相同的组
useradd -g wd zwj // 给新增加的用户,指定组
usermod -g 用户组 用户名  // 给用户换组

/etc/passwd 用户配置文件,记录用户的信息
/etc/shadow 口令的配置文件
/etc/group 组的配置文件,记录组的信息


image.png

运行级别

// 设置当前运行级别
init 0 // 关闭
init 6 // 重启
init 3 // 非图形界面 
init 5 // 图形界面

// 显示当前 运行级别
systemctl get-default
// 设置默认(linux系统开机后)运行级别,用户切换 图形界面 还是 非图形界面 
systemctl set-default multi-user.target // 设置成linux系统开机后,采用 非图形界面 
systemctl set-default graphical.target // 设置成linux系统开机后, 图形界面 

找回root密码 26课

文件目录指令

// 选项
-f 强制 (force)
-r 递归 (recursion)
pwd // 当前目录的绝对路径
cd // 直接cd  回到家目录
mkdir 目录 // 创建目录  mkdir -p /home/dog/tirger/cat  加上选项-p可以创建多级目录
rmdir 目录 // 删除空目录;如果有内容需要递归删除,rm -rf 目录
touch 文件 // 创建空文件
cp 文件或目录  目的目录 // 拷贝文件或目录;递归拷贝目录下面所有内容 : cp -r 文件或目录  目的目录;强制拷贝覆盖,不提示:\cp  -r 文件或目录  目的目录
rm 文件或目录 // 删除文件或目录 ; 强制递归删除 rm -rf 文件或目录
mv 文件或目录  目的文件或目录 // 移动、重命名 :文件或目录;前后名字不同,会重命名
cat 文件 // 查看文件 ;  cat -n 文件 : 查看文件带行号
more 详细见下图
less  详细见下图
image.png
image.png
echo 变量或内容 // 输出内容到控制台;echo $PATH ;echo "hello world"

tail 文件 // 默认显示文件末尾10行
tail -n 5 文件 // 显示文件末尾5行
tail -f 文件 // 监控文件变化(退出监控:ctrl+c)

head 文件 // 默认显示文件头部10行
head -n 5 文件 // 显示文件头部5行
image.png
ln -s /root /home/myroot // 给/root创建快捷方式 ,到在/home/myroo
rm -f /home/myroot // 删除快捷方式,和删除文件一样,不是删除文件夹
history // 查看 历史执行命令列表,显示所有执行的命令
history 10 // 显示最近10个
!5 // 执行 历史列表 编号为5的那条命令

时间日期

date // 显示当前时间
date "+%Y-%m-%d %H:%M:%S" // 显示 年月日时分秒  ; data "+%Y" 这样就是显示年
date -s "2021-11-03 09:00:05" // 设置日期时间

cal // 显示日历(不加选项,显示本月日历)
cal 2020 // 显示 哪一年的日历

搜索查找

find [哪个文件夹下查询] [选项]
选项:
-name 文件名
-user 用户
-size 文件大小 (+n大于,-n小于,n等于;单位K M G )
find /home -name *.js
find /home -user houchen | more
find /home -size -1M

ll -h // -h选项,是让列表信息,更让人看的懂

updatedb
locate hello.js

which 指令 // 可以查看指定在哪个目录下
grep "var" hello.js // 显示 在hello.js 中 含有var 内容的行
grep -n "var" hello.js // 带行号显示出来
grep -i "var" hello.js  // 查询内容不区分大小写

压缩和解压

// gzip 和 gunzip
gzip Hello.js 
gunzip Hello.js.gz 

// zip 和 unzip
zip He Hello.js // 把Hello.js压缩成He.zip
zip -r myHome.zip /home // 选项 -r 递归压缩,既压缩文件夹
unzip Hello.zip
unzip -d /opt/tmp myHome.zip // 选项 -d ,指定解压到哪个文件夹下

// tar
//压缩多个文件
tar -zcvf hw.tar.gz /home/hello.js /home/world.js
//压缩文件夹
tar -zcvf home.tar.gz /home
// 解压到当前目录
tar -zxvf hw.tar.gz
// 解压到指定目录
tar -zxvf home.tar.gz -C /opt/tmp

文件权限

  1. 一个文件有三个层级的权限:所有人、所有组、其他组
  2. 权限分3种:r 读取权限、w写入权限、x执行权限


    image.png
chown 用户名 文件名 // 修改文件所有者
chown 用户名:组名 文件名 // 修改文件所有者和所在组
chown -R 用户名:组名 文件名 // 修改文件所有者和所在组;如果是文件夹,递归执行
chgrp 组名 文件名  // 修改文件所在组
chgrp -R 组名 文件名  // 修改文件所在组;如果是文件夹,递归执行
usermod -g 新组名 要改组的用户名  // 给用户换组
usermod -d 新的家目录名 要改家目录的用户名 // 修改用户登录后,进入的初始目录
image.png
image.png
chmod u=rwx,g=rw,o=x hello.js

crontab 定时任务调度【相当于setInterval】(crontab 这个程序,在centos开机的时候,就默认开启不断监听有哪些要执行的任务)

crontab -e // 进入 vi编辑模式
*/1 * * * * ll /etc/ > /root/to.txt

crontab -r // 删除所有任务
crontab -l // 列出所有任务

service crond restart // 重启 任务调度 程序
crond语法
crond时间规则

at定时任务【相当于setTimeout】

ps -ef | grep atd // 查看 /usr/sbin/atd -f 有没有执行,只有它执行了,才能启动at定时任务
at [选项] [时间]
ctrl + D 结束at命令的输入, 输入两次 ctrl + D

atq 查询系统中的任务列表
atrm 编号 // 删除at任务

// 1. 两天后下午5点,执行 ls /home 命令
at 5pm + 2 days
at> ls /home  
// 2. 两分钟后,执行 date > /root/mydate
at now + 2 minutes
at>  date > /root/mydate
atd任务
at 时间

磁盘

增加磁盘分5步:
  1. 虚拟机添加磁盘
    在Vmware上左侧,我的计算机 - 找到要添加磁盘的系统 - 右键系统 - 设置 - 左下角添加按钮 - 选择磁盘 - scsi - 创建新的虚拟磁盘 - 将虚拟磁盘拆分成多个文件 - 完成 - 确认。重启系统
lsblk 或者 lsblk -f  // 查看磁盘信息
新增磁盘
  1. 分区
fdisk /dev/sdb  // 磁盘分区命令;所有的设备都在dev目录下,新增的磁盘叫sdb
m
n
p
1
回车
回车
m
w
// 查看磁盘信息,磁盘有一个分区了,但是没有格式化信息
lsblk -f
添加分区
  1. 格式化
mkfs -t ext4 /dev/sdb1  // 磁盘格式化命令
// 查看磁盘信息,有格式化信息了
lsblk -f
分区格式化
  1. 挂载
// 1. 先创建一个目录
cd /
mkdir newdisk
// 2. 挂载命令
mount /dev/sdb1 /newdisk/
有挂载目录了
  1. 卸载
umount /dev/sdb1  或者  umount /newdisk // 卸载命令,分区 或者 挂载的目录
  1. 永久挂载;新增磁盘和分区、格式化,重启后都在,但是挂载重启后,就不在了,需要使用永久挂载
vim /etc/fstab
mount -a // 立即生效
reboot  // 重启不会失效
永久挂载
查看磁盘情况
// 查看磁盘情况
df -h
// 查看目录的磁盘占用情况
du -ha
// 递归查看opt目录里的文件个数(R:递归)
ls -lR /opt | grep "^-" |  wc -l
image.png

网络配置

虚拟机网络配置设置

在Vmware最上面(菜单栏)- 编辑 - 虚拟网络编辑器 - NAT设置
在window上,也可以改虚拟机的网络配置,因为虚拟机就是在window系统上,创建了一个虚拟网卡,实际配置,还是建立在window系统上。

centos系统网络设置
  1. 图形界面设置:进入centos最上面(菜单栏) - 应用程序 - 系统工具 - 设置 - 网络


    image.png
  2. 命令设置
vim /etc/sysconfig/network-scripts/ifcfg-ens33

// 需要修改的代码
BOOTPROTO="static"
// 需要追加的代码
IPADDR=192.168.200.130
GATEWAY=192.168.200.2
DNS1=192.168.299.2
image.png

虚拟机网卡配置,网段也要设置成200


image.png

NAT网关设置也要配置成200


image.png
最后重启 网络服务 或者 重启系统(reboot)
// 重启 网络服务
service network restart 

设置主机名和hosts映射

hostname // 查看主机名
vim /etc/hostname // 修改这个文件,可以修改主机名;修改后,要重启系统

// 设置hosts映射
vim /etc/hosts // Linux 修改这个文件,可以修改hosts映射

DNS

Domain Name System 域名系统:是互联网上作为域名和IP地址相互映射的一个分布式数据库

ipconfig/displaydns // 显示DNS域名解析缓存
ipconfig/flushdns // 手动清理dns缓存

浏览器访问一个域名,域名 解析过程:

  1. 先去浏览器 域名缓存找;没有找到,
  2. 再到 操作系统 dns域名缓存找;还没找到
  3. 再到 hosts文件里找;还没找到;
  4. 再到 电脑网络配置,设置的dns对应的ip地址上去找;见下图


    电脑网络配置,设置的dns对应的ip

进程管理

每个进程都会分配一个id号,称为进程号:pid
一个程序运行起来了,就是启动一个进程。可分为前台和后台,前台就是用户可以在屏幕上操作的。后台程序,在执行,但是用户无法操作;系统服务一般都是后台程序


image.png
// 查看所有正在执行的进程
ps -aux 
// 查询一个正在执行的进程
ps -aux | grep sshd
// 查询一个进程的父进程(PPID)
ps -ef | grep sshd
image.png
进程图
// 查看进程树
pstree [选项]
选项:
-p 显示进程的PID
-u 显示进程的所属用户
kill [选项] 进程号
killall 进程名
// 踢掉tom登录用户
ps -aux | grep sshd  // 查询登录的所有用户进程id; sshd是远程登录服务;如果直接:kill sshd的进程id,远程就登录不上了
kill  tom的那个登录进程id
// 重启sshd服务
/bin/systemctl start sshd.service
终止进程

服务(service)管理

服务: 本质就是 后台运行的进程,也叫 守护进程,也叫 服务

service 服务名 [start | stop | restart | reload | status]
service network status // 查看网络服务的状态
ll /etc/init.d  // 查看centos7后,能使用service管理的服务
image.png
setup // 查看系统所有服务 

按键盘上下箭头选择行,按空格切换是否自动启动 ;按Tab键,切换操作按钮;回车确认


image.png
systemctl 指令
systemctl [start | stop | restart | status] [服务名] // 设置服务状态,系统重启后失效
systemctl stop firewalld // 关闭防火墙服务

ll /usr/lib/systemd/system // 查看 systemctl 管理的所有服务,以及对应的状态
systemctl list-unit-files | grep [服务名] // 查看 systemctl 管理的服务 开机启动状态

systemctl [enable | disabled] [服务名] // 设置 systemctl 管理的服务 , 在3,5两个运行级别的,开机启动状态,系统重启后还是有效
systemctl

防火墙

window系统访问linux系统,为例:

  1. window系统上有两个程序 mysql客户端、xshell6;去连接 linux
  2. 到linux防火墙,防火墙开启;如果防火墙设置开启22端口,就能连接到sshd服务;但是没有开启3306,不能连接到 mysql服务
  3. 如果linux防火墙关闭,所有端口都能访问了。


    防火墙
测试上面的防火墙例子

linux上,开启防火墙,并查看运行的服务和端口

systemctl start firewalld  // 开启防火墙
netstat -anp | more // 查看运行的服务和端口
image.png

上图有个111的端口,我们用 window系统命令行, telnet去连接,连接失败


image.png

linux上,关闭防火墙,window系统命令行, telnet去连接,连接成功

systemctl stop firewalld
防火墙打开或关闭指定端口

真正生产环境,防火墙是打开的,这时候就需要打开一些指定的端口,让外部可以请求通信

firewall-cmd --permanent --add-port=111/tcp // 给防火墙 开放端口 列表里 ,增加111端口
firewall-cmd --permanent --remove-port=111/tcp // 给防火墙 开放端口 列表里 ,移除111端口
firewall-cmd --reload  // 重启防火墙,才能生效
firewall-cmd --query-port=111/tcp  // 查询端口是否在防火墙 开放列表里
firewall-cmd --list-all // 查看防火墙规则列表
image.png

还是上面那个例子,linux上

systemctl start firewalld // 开启防火墙
firewall-cmd --permanent --add-port=111/tcp // 开启111端口
firewall-cmd --reload // 重启防火墙

window系统上,用 telnent 去连接 :telnet 192.168.200.130 111;成功

// 给防火墙 添加 指定ip和端口访问规则(192.168.200.130的机器,可以通过tcp协议访问这台机器的8080端口)
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.200.130" port protocol="tcp" port="8080" accept"
// 移除指定ip和端口访问规则
firewall-cmd --permanent --remove-rich-rule="rule family="ipv4" source address="192.168.200.130" port protocol="tcp" port="8080" accept"
// 重启防火墙
firewall-cmd --reload 

动态监控进程

top // 默认3秒刷新一次
top -d 5  // 5秒刷新一次
top -i // 不显示闲置和僵死进程
top -p 1 // 指定监控pid为1的进程
top2

监控网络状态

一个服务对应一个端口,有哪些服务开启(端口开启),哪些外部的服务(外部端口)连接成功;


image.png
netstat -an // 按一定顺序输出
netstat -p // 显示进程号pid
netstat -anp // 按一定顺序输出并显示进程号pid

netstat -anp | grep sshd // 查看sshd服务的 网络信息(端口和连接情况等等)
netstat -an 一个服务端口 连接 多个外部端口

rpm包管理工具(相当于node的npm)

rpm的安装包,是.rpm格式的

rpm -qa | grep xx // 查询已安装的rpm列表
rpm -qa | grep firefox // 查看是否安装了火狐浏览器
rpm -q firefox // 查看是否安装了火狐浏览器

rpm -qi [软件包名] // 查看已安装软件的信息
rpm -ql [软件包名] // 查看软件安装的位置和安装后的文件夹含有哪些文件

rpm -e [软件包名] // 卸载软件包
rpm -e --nodeps [软件包名] // 强制卸载软件包

// 查看一个文件,是哪个软件包安装后,生成的
rpm -qf [文件名] // 例如: rpm -qf /etc/passwd

// 安装软件包,要先下载好,放到一个文件夹里,这个安装包 是 .rpm格式的
rpm -ivh [软件包位置] // 安装软件包  i=install v=verbose(提示) h=hash(进度条)
rpm -ivh rpm -ivh /opt/firefox-68.10.0-1.el7.centos.x86_64.rpm // 先卸载 rpm -e firefox ;再安装firefox
安装firefox

先找到安装包,或者下载安装包;系统自带的安装包,在光盘Packages文件夹下。找到需要的包firefox


image.png

再到计算机 - /opt下,粘贴。* 注意: * 需要写入权限


image.png

yum

yum是一个基于shell的软件包管理器,能从指定服务器自动下载rpm包并且安装,可以自动处理依赖关系,一次性安装所有依赖包。

yum list | grep [软件包名] // 查看yum指定服务是否有需要安装的软件包
yum install [软件包名] // 下载并安装软件包,并且下载安装相关依赖

// 安装firefox
yum list | grep firefox
yum install firefox
rpm -q firefox

添加环境变量的两种方法

vim /etc/profile // 编辑环境变量文件
export PATH=$PATH:/root/node-v12.18.1-linux-x64/bin // 追加环境变量
source /etc/profile  // 立即生效
ln -s /usr/local/node/bin/node /usr/local/bin/
ln -s /usr/local/node/bin/npm /usr/local/bin/
上一篇 下一篇

猜你喜欢

热点阅读