linux忘记密码怎么整
1.关机重启时将光标定位到第一个:长按e (注意要快速)
2.往下移动光标找到LANG=zh_CN.UTF-8在后面输入init=/bin/sh
3.输入ctrl+x 进入单用户模式
4.在输入:mount -o remount,rw/ (别忘记斜杠,逗号两边没空格)
5.输入passwd 回车
6.输入新密码:xxxxxx
再次确认新密码:xxxxxx (输入的密码不会显示)
7.再次输入:touch /.autorelable(touch与/后面有空格)回车
8.再次输入:exec /sbin/init (exec与/后有空格) 后续执行时间有点长别动它

注销与登录
先用普通账户登录xshell
命令行切换到root账户:su - root(注意-前后均有空格)
logout再次回到普通用户

添加用户:(在root用户操作)
useradd xxx (默认是在home文件下)
useradd -d /home/user xxx 指定目录下创建用户
给创建的用户设置密码
passwd xxx

删除用户
1.userdel xxx  删掉xxx保留它的主目录
2.userdel -r xxx 删掉xxx连同它的主目录一起(注意慎重:一般不用)

查询用户信息
id xxx
who am i 显示第一次登录到的用户信息

添加组
groupadd xxx 
添加用户到指定组:useradd -g 武当 张无忌
将用户从一个组更改到另外一个组:usermod -g 魔教 张无忌
删除组
groupdel

帮助指令:
man + 指令 例如:man ls
ls -a 列出所有文件(包含隐藏文件以点开头“.”)
显示某个目录下的所有文件:ls -al /home(注意空格)

基本指令:
1.pwd:显示该目录的绝对路径
2.cd~ :表示回到自己的家目录
3.cd .. :回到当前目录的上一级目录
3.mkdir:创建目录(默认只能创建一级目录,要创建多级目录: mkdir -p /home/amimal)
4.rmdir :删除目录(只能删除空目录)
5.rm -rf xxx :删除非空目录
6.touch :创建一个空文件
7.cp hello.txt /home/bbb:将hello.txt 拷贝到home文件下的bbb文件夹内
8.cp -r /home/bbb /opt/ :将/home/bbb整个文件夹拷贝到opt文件夹内
8.rm /home/hello.txt :删除home下的hello.txt文件
9.rm -rf /home/bbb/:删除home 下整个bbb文件夹(,r表示递归删除,f表示强制删除不提示)
10.mv :移动或者重命名文家或者目录
在同一个文件夹就是重命名:
mv oldname newname 重命名文件
在不同文件夹内就是移动:
mv /temp/movefile /targetFolder 将temp下的movefile移动到targetFolder文件夹内
11.cat 显示文件+n显示行号:cat -n /etc/profile 显示etc下profile文件并展示行号 
cat -n /etc/profile |more (|more管道指令:可以显示怎么看:可以一行一行看(enter),也可以一页一页看(空格))
12.more指令(查看文件:more /etc/profile )
后面可以加一些操作:可以一行一行看(enter),也可以一页一页看(空格) ,q退出more指令。ctrl+f向下滚动一屏幕。ctrl+B返回上一屏幕
 = 输出行号。 :f输出文件名和当前行号
13.less查看文件指令:less /home/django
14.echo 输出内容到控制台 
echo "hello, word~"
15.head 输出文件的前几行默认是10行(可以指定看多少行)
head -n 5 xxx查看某个文件的前5行
16.tail 显示文件后几行(默认10行,也可以指定)
tail -n 5 xxx 查看文件的后5行
tail -f xxx实时追宗文件的更新
17.>大于符:重定向  (如果有内容就覆盖)
例如echo "hello,word" > /home/redis/a.txt 把本该显示在终端的写入a.txt文件内
18 >>重定向追加(有内容就追加到内容后面)
19.cal显示当前日历信息
20.ln 软连接(类似于桌面快捷键)
ln -s 源文件 软连接名 :ln -s /root/ /home/myroot在home/myroot文件下创建一个连接root目录的软连接
rm /home/myroot 删除软连接
21.history 查看已经执行过的指令
!+历史编号:执行曾经执行过的指令
22.date -s "2022-11-03 20:02:10" 设置系统事件
23.cal 2020 显示2020年的日历
24.find 查找指令
find /home  -name hello.txt 在home文件下查找名叫hello.txt的文件
find /home -user nobody 按照用户名来查找
find / -size +200M(+大于 —小于) 按照文件的大小来找
25.lacte  快速定位文件路径(第一次使用前必须使用updatedb创建自己的小型数据库)
locate a.txt
26.which ls 查看ls在那个文件目录
27.grep过滤查找(一般跟管道符号|使用)
第一种写法:cat a.txt | grep -n "hello" 查找a.txt文件里的hello单词,并显示行号
第二种写法:grep -n -i "hello" a.txt (加-i表示忽略大小写,不加表示区分大小写)
28.gzip压缩 gunzip解压缩指令(后缀名是.gz)
gzip /home/a.txt压缩home文件下的a.txt
gunzip  /home/a.txt.gz
zip 用于压缩文件夹
zip -r myhome.zip /home/ 将home文件夹及其子文件夹压缩成  myhome.zip文件
unzip 解压文件夹
uzip -d (解压到指定目录) /opt/tmp myhome.zip 将myhome.zip解压到 opt下的tmp文件内

29.tar 既可以解压也可以打包
打包:zcvf
tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt 将home文件夹内的cat.txt和pig.txt打包成 pc.tar.gz
tar -zcvf myhome.tar.gz /home/ 将整个home文件夹打包成myhome.tar.gz
解压:zxvf 
tar -zxvf pc.tar.gz  解压pc.tar.gz到当前目录
tar -zxvf pc.tar.gz -C /opt/tmp  将pc.tar.gz解压到/opt文件下的tmp文件内
30.修改所在组:a.txt原本在root文件下,想将它放在home组内
chgrp home a.txt
31.权限的基本介绍
-rwxrw-r-- 1(表示该文件加目录的个数) root(用户所) root(用户所在组) 1213(文件大小) Feb 2 09:39(创建事件) abc(该文件) (r表示读,w表示写,x表示执行)
前0-9位说明(-rwxrw-r--)
1.第0位确定文件类型(一般有d, -, l c, b)此处是 
- :就是一个普通文件
l :表示连接,相当于windows快捷键
d :表示目录,相当于windows的文件夹
c :表示字符设备文件 ,如鼠标、键盘
b :表示块设备,如硬盘

1-3位(rwx)确定该文件的所有者拥有的权限 -user

4-6位(rw-)确定所属组拥有该文件的权限 -group

7-9位(r--)确定其它用户拥有的该文件权限 -other
32.修改权限 chmod
第一种方式:+,—,= 变更权限
u:所有者 g:所在组 o:所有人
1.chmod u=rwx,g=rx,o=x 文件名/目录 给用户附加rwx 权限,给所在组附加rx权限,给所有人附加x权限
2.chmod o+w  文件名/目录 给所有者附加w的权限
3.chomod a-x  文件名/目录 给所有者去除 x权限
案例:给bac文件的所有者读写执行的权限,所在组读执行的权限,所有人读执行的权限
chmod u=rwx,g=rx,o=rx abc
第二种修改方式:通过数字变更权限
r=4 w=2 x=1 rwx =4+2+1=7
chmod u=rwx,g=rx,o=x 文件名 ===》chmod 751 文件名
33.修改文件的所有者 chown
chown newowner 文件名/目录 改变所有者
chown newowner:newgroup 文件名/目录 改所有者和所在组(-R表示递归)

chown tom /home/abc.txt将home文件下的abc.txt所有者改成tom
chown tom -R /home/test (R和tom可以交换位置)

33.修改文件/目录所在组:chgrp (-R表示递归)
chgrp newgroup 文件/目录 改变所在组
chgrp shaolin /home/abc.txt将home下的abxc.txt的所在组改成shaolin

34.文件夹的rwx和文件的rwx的区别
文件夹:
r : 可以显示文件
w :表示可以在文件下创建文件/删除文件
x :表示可以进入文件
文件:
r;读
w:写
x;执行

34.定时任务调度(crond)
crontab:进行定时任务设置
crontab -e :编辑crontab定时任务
*/1 * * * * ls -l /etc/ > /home/lianxi/to.txt
crontab -l :插叙crontab任务
crontab -r删除当前创建的croontab任务
例子:每隔1分钟将当前日期和日历追加到/home/mycal文件中
1.先写一个shell脚本
vim /home/my.sh (date >> /home/mycal    cal >> /home/mycal)
2.更改脚本权限
chmod u+x /home/my.sh
3.用crontab调用
crontab -e */1 * * * * /home/my.sh
例二:
每天凌晨2点将mysql数据库tesddb,备份到文件中(提示指令:mysqldump -u root -p 密码 数据库 >> /home/db.bak)
crontab -e 
0 2 * * * mysaldump -u root -proot testdb >> /home/db.bak

crontab -r 删除所有调度
crontab -l显示所有调度
service crond restart 重启调度任务
ps -ef 检查所有正在运行的进程 (后面可以添加过滤:ps -ef | grep atd)
35.定时任务;at 一次性定时计划任务
基本语法:
at 选项 命令
ctrl+d结束命令 (输入两次)
at 5pm tomorrow
date > root/date100.log(两次ctrl+d) 明天下午5点将日期写到root/date100.log这个文件中去

at now + 5 minutes 
date > /home/date.log(两次ctrl+d) 5分钟后将日期写入home稳健型唉的date.log
也可以执行shell脚本
at now + 5 minutes
/home/my.sh (脚本要存在并且拥有可执行权限)
 
atrm +任务编号  删除定时任务

lsblk 查看分区挂载(mount)情况
lsblk -f 查看分区详情
硬盘挂载:
1.虚拟机-设置-选中硬盘-添加-选择scsi-默认-直接下一步-选择硬盘大小-完成创建(重启后才能挂载)
2.重启虚拟机(reboot)重新连接xshell
3.输入lsblk查看分区
4.给新硬盘增加分区 :
fdisk /dev/sdb
m 显示列表命令
n 新增分区
p 显示磁盘分区
选择多少个分区:1-4,选择1个分区
最后输入w写入并退出(分区创建完成)
5.给分区格式化,(目前没有分区类型和uuid必须格式化指定)
mkfs -t ext4 /dev/sdb1 ;其中ext4表示分区类型
此时就会新增uuid和分区类型
6.挂载分区
想在根目录下创建要挂载的文件newdisk
mount /dev/sdb1 /newdisk 将分区挂载到newdisk上分区挂载完成
卸载分区:umount /dev/dsb1 或者umount /newdisk
用命令行挂载的重启会失效(**********)
永久挂载:
修改 /etc/fstab 
vim /etc/fstab 
拷贝一份挂载关系:yy p (在正常模式下复制)
/dev/sdb1         /newdisk       00  
保存退出 在重启就完成了
执行mount -a

查询分区使用情况:df -h
插叙具体目录的使用情况:
du -h 插叙当前目录磁盘占用情况
   -s指定目录占用大小汇总
   -h 带计量单位
   -a含文件
   --max-depth =1 子目录深度
   -c列出明细同时,增加汇总值
例如:查询/opt目录磁盘占用情况深度为1
du -h /opt --max-depth=1 
du -hac /opt --max-depth=1

磁盘工作指令
统计opt文件夹下文件的个数
ls -l /opt | grep "^-" (支持正则表达式:以-开头)|wc -l (统计个数)
统计opt文件夹下目录的个数包括子文件夹里面的
ls -lR(表示递归) /opt | grep "^-" | wc -l 
以树状显示目录结构 (默认情况下没有安装tree指令,使用yum install tree)
tree /home/
指定ip :直接修改配置文件来指定IP,并可以连接到外网
 1. vim /etc/sysconfig/network-scripts/ifcfg-ens33
要求将ip地址配置成静态的,比如:ip改为192.168.200.130
2. 将BOOTPROTO="cdbh"改为
BOOTPROTO=static
#ip地址
IPADDR=192.168.200.130
#网关
GATEWAY=192.168.200.2
#域名解析器
DNS1=192.168.200.2
3. 将虚拟机上的ip更改为192.168.200.2
编辑-虚拟网络编辑器-vmnet8-子网ip改为192.168.200.0-NAT设置-网关设置改为192.168.200.2 应用保存就可以了

获取主机名:hostname
修改主机名:vim /etc/hostname 
修改主机映射(不用通过IP地址直接ping主机名)
自己windows主机通过主机名访问linux:
直接在C:\Windows\System32\drivers\etc 修改hosts 192.168.200.130 主机名
linux通过主机名访问自己windows主机:
1.首先知道自己主机名:pc-pc
2.在/etc/hosts文件中指定
vim /etc/hosts 
192.168.200.1 pc-pc
进程:
ps -a 显示当前终端所有进程
ps -u 以用户的格式显示进程信息
ps -x 显示后台进程运行的参数(一般组合使用)
查看当前进程里面是否有sshd
ps -aux | grep sshd (查看登录进程状态)

kill[选项]进程号;单独终止某一个进程
killall进程名称:终止所有进程
-9:表示强制进程立刻停止
例子:强制踢掉某个非法登录的用户
1.找到登录的进程号
ps -aux | grep sshd
杀死该进程号
2.kill 11421
例子:终止远程登录服务sshd,在适当的时候再次重启sshd服务
1.找到登录的进程号
ps -aux | grep sshd
2.kill sshd对应的进程号,
3.重启服务
/bin/systemctl start sshd.service
终止多个进程号:killall gedit
强制杀死一个终端
1.查看终端: ps -aux | grep bash
kill -9 要杀死的终端进程号
以树状图显示进程:pstree
pstree -p 以树状图显示pid
pstree -u 显示所属用户
服务管理:
service 服务名 start\restart\stop\reoad\status
查看所有服务:setup 前面打*号的表示开机自启动
产看当前服务级别:systemctl get-default
设置服务级别:
systemctl set-default multi-user.target 设置默认级别到多用户级别(无图像的)
systemctl set-default graphical.target (设置成有图版本的)
chkconfig指令:可以给服务设置自启动/关闭
chkconfig --list | grep xxx 查看服务列表(可以过滤)
chkconfig --level 5 服务名 on/off 将某个服务在某个级别设置关闭或者开启
chkconfig --level 3 network on 将network在3级别打开
systemctl 服务名 start\restart\stop\reload\status 
systemctl enable 服务名:设置开机自启动
systemctl list-unit-files | grep xxx 查看服务启动状态
systemctl disable 服务名 关闭服务器自启动
systemctl is-enabled 服务名:查看某个服务是否是自启动
telnet 测试某个端口 
防火墙小知识点:相当于一个保护罩,里面可以开设/关闭某个端口,关闭了的端口外面是无法访问的
撤去了防火墙,外面的就可以直接访问
在防火墙中打开端口:
netstat -anp | more 查看服务协议
firewall-cmd --permanent --add-port=端口号/协议 打开端口
firewall-cmd --permanent --remove-port=端口/协议
关闭或者打开需重新载入才能生效:firewall-cmd --reload 
查询端口是否开放:firewall-cmd --query-port=端口、协议
动态监控指令;top(默认每隔3秒刷新)
输入:  P:按照CPU来排序
	M;按照内存占用大小排序
	N:按照pid大小排序
	q:退出top指令
键值某个特定用户:比如tom
1.输入top
2.输入u回车,在输入用户名tom
终止某个进程:结束tom登录
1.top
2.输入k回车,在输入要结束的进程号xxx在输入信号量:9强制终止
指定系统动态更新时间:top -d 10	
监控网络状态:
netstat -an 按照一定顺序输出
netstat -p 显示那个进程在调用
查看服务名为sshd的服务信息
netstat -anp | grep sshd

rpm包的管理:查看rpm的指令: rpm -qa | grep xxx 查看某一个软件
查看某一款软件是否安装:rpm -q xxx
查看软件包的详细信息:rpm -qi xxx
查询软件包中的文件 rpm -ql xxx
rpm -qf 文件路径名  查询文件所属软件包
rpm -qf /etc/passwd 查询etc下面passwd的文件路径

删除rpm包:rpm -e xxx
安装rpm包:rpm -ivh rpm包的全路径名称 (i表示install,v表示verbose提示, H表示hash进度条)
yum list | grep xxx 软件列表
yum install xxx下载安装

shell是一个命令行解释器,它为哦你过户提供了一个想linux内核发送请求方便程序运行的界面系统程序,用户可以用shell来启动,挂起,停止甚至
是编写一些程序
脚本格式要求:
1.以#!/bin/bash开头
2.脚本需要可执行权限
编写一个shelle脚本输出helloword
1.vim hello.sh 默认是以.sh为后缀
2.第一行
#!/bin/bash 
echo "helloword" 
3.修改执行权限
chmod u+x hello.sh (也可以不给执行权限,直接:sh hello.sh,系统会自动将hello.sh将脚本执行就会输出hellword)
4.变成绿色后执行:./hello.sh

shell变量
1.定义变量
#!/bin/bash 
a=100 (等号中间不加空格)
echo a=$a ======echo "a=$a"
2.撤销变量a
unset a 
echo a=$a
3.定义静态变量,b=2(注意:静态变量不能unset)
readonly b=2
echo b=$b
返回命令语句的结果
b=$(cal)= b=`cal`
echo b=$b 
配置环境变量
1.export 变量名=变量值 将shell变量输出为环境变量、全局变量
2.source 配置文件  让修改后的配置信息立刻生效
3.echo $变量名 查询环境变脸的值
设置tomcat的环境变量 (tomecat在/opt/tomcat)
vim /etc/profile
export TOMCAT_HOME=/opt/tomcat 全局变量设置完成
使用:echo "tomcat_home=$TOMCAT_HOME"
shell脚本里面的多行注释
:<<!
内容
!

运算表达式:
计算(2+3)*4 
1.第一种写法
res1=$(((2+3)*4)) 
2.第二种写法
res2=$[(2+3)*4] 
3.第三种写法
temp=`expr 2 + 3` 加号两边有空格 
res4=`expr $temp \* 4` 乘号前面加\
echo "res4=$res4"
例二;求两个命令行参数的和 20 50
sum=$[$1+$2] $1表示第一个参数$2表示第二个参数
echo "sum=$sum"

条件判断语句
语法:[ condition ] 中括号和condition之间要有空格
1.判断ok是否等于ok
#!/bin/bash
if [ "ok" = "ok" ]
then 
echo "equal"
 fi
2.判断23是否大于等于22
if [ 23 -ge 22 ]
then 
echo "yes"
fi
3.判断/root/shcode/aaa/txt在目录文件是否存在
if [ -f /root/shcode/aaa.txt ]
then
echo "存在"
fi 

流程控制:
if [ 条件 ]
then
代码
elif [ 条件 ]
then 
代码
fi 
************中括号内空格不能省
编写shell代码;接收一个参数,大于等于60,输出及格,小于60输出不及格
#!/bin/bash
temp=$1
if [ $temp -ge 60 ]
then
echo "jige"
elif [ $temp -lt 60 ]
then
echo "bujige"
fi

case语句
基本语法
实例:当命令行参数是1输出周一。当命令行参数为2输出周二,其它输出other
case $1 in
"1")
echo "zhouyi"
;;
"2")
echo "zhouer"
;;
"*")
echo "qita"
;;
esac

for循环
实例:打印命令行输入的参数
#!/bin/bash
for i in  "$*"
do
echo "num id $i"
done
$*将输入的参数当作一个整体

echo "============="
for j in "$@"
do
echo "num is $j"
done
$@将输入的参数当作一个一个的参数
例二:从1加到100
#!/bin/bash
#例二:从1加到n(n为输入的参数)
SUM=0
for ((i=1; i<$1; i++))
do
        SUM=$[$SUM+$i]
done
echo "zonghe=$SUM"
           
while循环
案例:从命令行输入一个数n,统计1+..n的值是多少
SUM=0
i=0
while [ $i -le $1 ]
do
        SUM=$[$SUM+$i]
        i=$[$i+1]
done
echo "SUM=$SUM"

read 读取控制台输入案例
read 选项 参数
read -p 读取时的提示符
read -t 指定多少秒内输入
1.读取控制台输入一个NUM1的值
read -p "请输入一个NUM1=" NUM1
echo "你输入的NUM1=$NUM1"  
2.读取控制台输入一个NUM2的值,在10S内输入
read -t 10 -p "请输入一个NUM2="NUM2
echo "你输入的NUM2=$NUM2"   

函数
basename:返回完整路径
basename /home/lianxi/a.txt(输出a.txt)

dirname 文件的绝对路径             
dirname /home/lianxi/a.txt(输出 /home/lianxi)

自定义函数
案例:动态获取两个函数的和,getSum
function getSum(){
        SUM=$[$n1+$n2]
        echo "he shi =$SUM"

}
# 动态获取
read -p "qing shu ru yi ge shu n1=" n1
read -p "qing shuru di er ge shu n2=" n2
#函数调用
getSum $n1 $n2

  

版权声明:本文为酷毙的码畜原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/Kiss-maidou-1994/p/16515978.html