目录结构
bin:存放系统命令
home:存放普通用户的主目录,每个普通用户对应一个目录
root:管理员用户的的主目录
etc:配置文件存放的目录
例如:/etc/passwd 用户信息
/etc/shadow 用户加密信息
/etc/group 分组信息
usr:放用户的应用程序和文件
usr/local:是另一个给主机额外安装软件所安装的目录
boot:存放启动Linux使用的核心文件
media:外设文件
var:这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。如各种日志文件。
文件类型
-:普通文件
d:目录文件
l:软链接文件
c:字符设备文件
b:块设备文件
运行级别
0 :关机
1:单用户(可以用来找回root密码,必须在本机上操作)
2:多用户(无网络)
3:多用户(有网络)
4:保留
5:图形界面
6:重启
配置文件在/etc/inittab下
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JAc2uRMi-1629133829781)(upload%5Cimage-20210411204506675.png)]
基本命令
-
查看手册
man [具体命令]
-
查看当前系统信息
uname -r 查看当前系统内核发行号
-
查看当前时间
date [+%Y] [+%m] [+%d] 显示年/月/日
date “+%Y-%m-%d %H:%M:%S” 根据指定格式显示当前时间
-
查看日历
cal [month] [year]
cal 4 2021 查看2021年4月的日历
-
回显输入内容
echo hello world
-
关机
shutdown –h now 立刻关机
shudown -h 1 1分钟后会关机了
-
重启
shutdown –r now 现在重新启动计算机
-
查看执行命令的历史
history 10 显示最近执行的10条命令
用户
-
创建用户
useradd 【 -g groupname 】user
-
修改密码
passwd user
-
切换用户
su user 切换到user用户
使用exit退出,回到原本账户
-
删除账户
userdel user
-
查看当前登录系统的用户
who
-
查询用户信息
id user
-
切换用户级别
init [012356]
-
修改文件所有者
chown username user.tar.gz 【组并不变化】
chown username:groupname user.tar.gz【同时改变组和所有者】
chown [-R] user:user logs/ 将logs下的文件全部转移到user组和user用户下
-
修改文件所有组
chgrp [-R] groupname user.tar.gz
-
组的创建
groupadd groupname
-
usermod –g 组名 用户名 【修改用户所在组】
usermod –d 目录名 用户名 【改变该用户登陆的初始目录 】
文件目录
-
pwd 显示当前工作目录
-
ls -lah 显示当前目录下的文件
【-a表示显示所有(包括隐藏的)-l表示以列表的方式显示信息 -h表示文件大小以更友善的方式显示】
-
cd ~ 回到当前用户的根目录
-
mkdir [-p] conf/myconf 新建目录【-p 表示新建多级目录】
-
rmdir log 删除非空目录
rm -rf conf/myconf
find -exec rm -rf {} ; 删除找到的文件
-
touch 新建空文件
-
cp [-r] source dest 复制文件【-r 递归复制文件夹】
-
rm [-rf] 删除文件【-r 递归,-f不提示】
-
移动或者重命名文件
rm name1 name2
rm oldfilepath newfilepath
-
> 重定向
ls -l > file 将ls -l的内容写入file
-
>> 追加
ls -la >> file 将ls -la 追加到file末尾
-
符号链接
ln test.txt copy_test 硬链接
ln [-s] /root copy_root 软连接 【-s可以似的链接到目录】
查看文件
-
cat
查看文件全部内容
cat -n Main.java 查看Main.java全部内容,并对所有行进行编号
cat Main1.java Main2.java 同时查看Main1.java 和Main2.java
cat Main1.java Main2.java > Main3.java 将文件Main1.java和Main2.java合并成文件Main3.java
cat > Main4.java 将键盘输入信息到文件Main4.java中【回车+(Ctrl + D)】
-
more
查看一屏文件内容
空格键 显示下一屏
回车键 显示下一行
b 显示上一屏
q 退出
more -10 Main1.java 一屏展示十行
more -d Main1.java 在每屏底部显示提示信息(当前展示内容的百分比,按键提示等)
more -c Main1.java 不滚屏(即:在输出下一屏时先清屏)
more +10 Main1.java 从第十行开始显示
more +/System Main1.java 在文件中查找System,并从其第一次出现的 位置附近开始显示
-
less(适合显示大型文件)
less -M -N -I -p Int Main1.java
-M 显示读取文件的百万比、行数
-I 搜索时忽略大小写
-i 搜索时忽略大小写,除非搜索的字符中包含大写
-N 在每行前输出行号
-p pattern 搜索字符串pattern,并从包含其的第一行开始打印
-
head
head -c100 Main1.java 查看该文件的前100个字符
head -n10 Main1.java 查看该文件的前十行
-
tail
tail -c100 Main1.java 查看该文件的最后100个字符
tail -n10 Main1.java 查看该文件的最后十行数据
VIM
在正常模式下:
nyy表示复制当前向下的n行,按p进行粘贴
ndd表示删除当前向下的n行
在命令行模式下使用/Hello 搜索关键字
显示行号:set nu
取消行号:set nonu
在正常模式下:按G调到文件末行,按gg回到文件首行
撤销输入:先按esc回到正常模式下,然后按u
按行移动光标
数字0,可将光标移动到当前行行首。
$键,将光标移到当前行行尾。
G键将光标移到文件最末行行首,若将光标移动到指定行,可使用:
[行号]G
在屏幕内移动光标
H(Home)键将光标定位到屏幕顶部一行的最左端;
M(Middle)键将光标定位到屏幕的中间一行;
L(Lower)键将光标定位到屏幕底部的一行。
搜索查找
-
find
find /home -name hello.txt 在指定目录下查找指定名称的文件
find /home -user user 在指定目录下查找用户user的文件
find / -size +20M 在指定目录下查找大于20M的文件【-n 表示小于 +n 表示大于 n表示等于 】单位M、k
-
locate
快速定位文件
第一次使用前,必须使用updatedb指令创建locate数据库
-
grep
|:管道符,表示将前一个命令的处理结果输出传递给后一个命令去处理
cat Main1.java | grep [-ni] System
在Main1.java中不区分大小写查找System并且显示行号
解/压缩
-
gzip 压缩文件 压缩后原本文件不保留 压缩为.gz格式
gunzip 解压文件
-
zip 压缩文件 zip -r【递归压缩】 package.zip【压缩包名】 /home/yb 【路径】
unzip 解压文件 unzip -d【指定路径】/home/user【路径】 package.zip【解压那个包】
-
tar
tar -zcvf a.tar.gz Main1.java Main2.java 将Main1/2.java打包成a.tar.gz
tar -zxvf a.tar.gz 【-C /opt】 将a.tar.gz解压【到指定目录】
权限
rwx作用到文件
-
[ r ]代表可读(read): 可以读取,查看
-
[ w ]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是
对该文件所在的目录有写权限,才能删除该文件.
- [ x ]代表可执行(execute):可以被执行
rwx作用到目录
-
[ r ]代表可读(read): 可以读取,ls查看目录内容
-
[ w ]代表可写(write): 可以修改,目录内创建+删除+重命名目录
-
[ x ]代表可执行(execute):可以进入该目录
修改权限
u当前用户 g当前组 o其他人 a 所有人
chmod u+rwx,g-w,o=rw Main1.java
chmod 726 Main1.java
定时任务
步骤
1.crontab –e
2.*/1 * * * * ls -l /etc >> /tmp/to.txt
3.当保存退出后就执行程序
显示当前正在执行的定时任务
crontab -l
终止定时任务
crontab -r
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UIdXSqs1-1629133829786)(upload Cimage-20210406225956718.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CZ3E3rny-1629133829789)(upload%5Cimage-20210406230021108.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nd4sV1o5-1629133829792)(upload%5Cimage-20210406230039060.png)]
系统常用命令
查看当前系统位数:getconf LONG_BIT
一般把软件安装到/usr/local/*下
查看当前正在运行的进程 ps -ef
安装netstat工具 yum install net-tools
查看服务器所有被占用的端口 netstat -ant
查看某个端口 netstat -tunlp|grep 80
查看所有端口 netstat -lntp
释放端口 firewall-cmd --zone=public --add-port=80/tcp --permanent
重载防火墙 firewall-cmd --reload
删除文件 rm -rf webapps
重命名文件 mv webapps.dist webapps
授权 chmod -R(递归) 777 /mydata/elasticsearch/data
查看编码:vim下:set fileencoding
磁盘相关指令
-
查看当前系统还有多大的磁盘容量
df -lh
-
查看目录占用情况
du -ach --max-depth=1 /目录
a:含文件
c:显示汇总值
h:带计量单位
–max-depth=1:查询深度为1
-
查看目录下有几个标准文件
ls -l【R】 /home | grep “^-” | wc -l(R递归)
-
查看目录下有几个标准目录
ls -l /home | grep “^d” | wc -l
-
以树状显示目录i
tree /
进程管理
-
jobs:查看后台进程作业
-
显示系统执行的进程
a:显示所有进程
f:显示父进程
u:指定用户的所有进程
x:显示后台进程运行的参数
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3azguXKv-1629133829796)(upload%5Cimage-20210411195727244.png)]
-
终止进程
kill 3391
终止多个进程
killall vim 【杀掉所有vim的子进程】
-
强制终止
kill-9 xxxx
-
以树状形式展示进程信息
pstree [-pu] 【-p:显示父进程ID】【-u显示进程所属用户】
服务管理
**service 执行后立刻生效但是关机失效 **
chkconfig执行后不立刻生效 但是重启后会一直生效
-
查看服务
service xxxx status
-
开启服务
service xxxx start (临时生效)
-
关闭服务
service xxxx stop (临时生效)
-
在windows测试linux某端口是否打开
telnet 192.168.1.1 3306
-
chkconfig
chkconfig --list 查看所有服务的与运行级别
chkconfig xxx --list 查看服务xxx在各个级别下是否自启动
-
修改某个服务在某运行级别下是否自启动
chkconfig --level 1 vmware-tools on 不写level默认在所有级别下
RPM & YUM
-
查询当前系统有没有安装某软件包
rpm -qa | grep java 【-q查询 -a所有】
-
查询是否安装某软件
rpm -q firefox
-
查看某个软件包的详细信息
rpm -qi firefox
-
查看某软件安装到哪了
rpm -ql firefox
-
查询某个文件属于哪个软件
rpm -qf 文件路径
-
卸载rpm包
rpm -r 【–nodeps 强制删除】 firefox
-
安装rpm
rpm -ivh firefox-68.10.0-1.el7.centos.x86_64.rpm
-
查询yum服务器上是否有需要安装的软件
yum list | grep redis
-
安装rpm
yum install pcp-pmda-redis.x86_64
查看服务器当前情况
-
free 内存
-
查看网络
netstat -anp 【p:显示哪个进程在调用】
-
ifstat 查看网络状况
-
动态监控
top:类似于ps,但是会实时更新
-i 忽略闲置或僵死进程
top -d 10 :10秒刷新一次
top -p 2359 :实时监控2359进程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MejMBFL9-1629133829797)(upload%5Cimage-20210411210011959.png)]
进入top后可以按u,然后输入用户名,来查看指定用户的进程状况
进入top后可以按k,然后输入进程ID,可以来杀死进程
按P :根据CPU使用排序
按M :根据内存使用排序
按N :根据PID排序
q:退出
-
vmstat
主要查看CPU使用情况
-
mpstat 查看各个cpu核心的使用情况
-
pidstat 监控进程的系统资源占用情况
-
iostat 查看磁盘io情况
Shell
注意:
变量名通常为大写,赋值时=两边不能有空格
-
查看系统变量
echo "USER=$USER ";
-
定义变量
A=100
-
撤销变量
unset A
-
定义静态变量
readonly B=23
-
定义环境变量
vim /etc/profile
TOMCAT_HOME=/opt/tomcat
resource /etc/profile
-
多行注释
:<<! ************ !
位置参数
第n个参数:$1 $2……$9 ${10}……
全部参数(整体对待):$*
全部参数(分开对待):$@
参数个数:$#
预定义变量
echo "当前进程号: $$"
./myshell02.sh & #后台运行一个程序
echo "最后一个后台进程: $!"
echo "上一个命令是否执行成功: $?"
运算符
expr a + b #运算符之间必须要有空格
“$*((运算式))”
“$[运算式]”#推荐
流程控制
if
#!/bin/bash
if [ $1 -ge 60 ]
then
echo "及格了"
elif [ $1 -lt 60 ]
then
echo "不及格"
fi
if [ "ok" = "ok" ]
then
echo "equal"
fi
if [ 23 -gt 22 ]
then
echo "ok"
fi
if [ -e /shell/a.txt ]
then
echo "存在"
fi
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jolmpMmg-1629133829799)(upload%5Cimage-20210416173625801.png)]
case
case $1 in
"1")
echo "周一"
;;
"2")
echo "周二"
;;
*)
echo "other"
;;
esac
for
echo "\$*输出如下"
for i in "$*"
do
echo "then num is $i"
done
echo "\$@输出如下"
for i in "$@"
do
echo "then num is $i"
done
SUM=0
for((i=1;i<=100;i++))
do
SUM=$[$SUM+i]
done
echo "SUM=$SUM"
while
COUNT=1
while [ $COUNT -lt 10 ]
do
echo "count = $COUNT"
COUNT=$[$COUNT+1]
done
读取控制台输入
read -p "请输入一个数字num1=" NUM1
echo "您输入的是num1=$NUM1"
#在规定时间内输入num2 单位为秒
read -t 5 -p "请输入一个数字num2=" NUM2
echo "您输入的是num2=$NUM2"
函数
basename:获取文件名
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mBCmzZRl-1629133829801)(upload%5Cimage-20210416183235357.png)]
dirname:获取目录
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DDtEruHa-1629133829803)(upload%5Cimage-20210416183504252.png)]
自定义
#不需要形参
function getSum(){
SUM=$[$N1+$N2]
echo "和是=$SUM"
}
read -p "请输入第一个数:" N1
read -p "请输入第二个数:" N2
getSum $N1 $N2
其他
SSH
先检查有没有安装ssh服务:rpm -qa | grep ssh
如果没有安装ssh服务就安装 : yum install openssh-server
安装好后在ssh配置文件里进行配置 : vim /etc/ssh/sshd_config
Port 22
PermitRootLogin yes
开启后用 ps -e | grep sshd 检查一下ssh服务是否开启
安装JDK
查看jdk版本:java -version
查看当前jdk信息:rpm -qa | grep java
卸载jdk:rpm -e --nodeps jdk名
解压tar.gz压缩包:tar -zxvf jdk.tar.gz
配置jdk环境变量
vim /etc/profile
Esc + :wq 保存并退出
Esc + :q! 强制退出并忽略所有更改
#set java envirment
export JAVA_HOME=/root/jdk1.8.0_152
export PATH=
J
A
V
A
H
O
M
E
/
b
i
n
:
JAVA_HOME/bin:
JAVAHOME/bin:PATH
export CLASSPATH=.:
J
A
V
A
H
O
M
E
/
l
i
b
/
d
t
.
j
a
r
:
JAVA_HOME/lib/dt.jar:
JAVAHOME/lib/dt.jar:JAVA_HOME/lib/tools.jar
随后重新加载该文件:source /etc/profile
安装MySQL
解压tar压缩包:tar -xvf mysql.tar
查看当前MySQL信息:rpm -qa | grep mysql
卸载mysql:rpm -e --nodeps mysql名
安装服务端: rpm -ivh MySQL-server-5.6.22-1.el6.i686.rpm
安装tomcat
tar -zxvf apache-tomcat-7.0.57.tar.gz
./starup.sh
开放端口:/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
静态IP
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:0C:29:41:02:37
TYPE=Ethernet
UUID=25e15832-7fb8-4934-a512-bdd0133d98e7
NM_CONTROLLED=yes
ONBOOT=yes 自启动
BOOTPROTO=static 静态IP
IPADDR=192.168.1.1 IP地址
NETWORK=255.255.255.0 子网掩码
配置网络
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yGmKXRin-1629133829805)(upload%5Cimage-20210112203413205.png)]