linux 操作系统
一.linux 操作系统概述
1.常见操作系统
- 服务端操作系统 : linux、unix、windows server
- 单机操作系统 : windows(dos 、ucdos、win95、win98、win2000、xp、vista、win7、win8)
MAC 、linux(ubuntu)
- 移动操作系统 Android、IOS 、Windows phone
2.linux操作系统介绍
- 为什么要学习linux操作系统
1. 大部分服务端都采用linux ,JEE部署到服务器中
2. 一些企业和学校采用linux研发和教学
3. 很多嵌入式开发 用linux
4. 云计算、大数据 是集群网 linux : centos
- 特点
1. 开放、开源、多用户的网络操作系统
2. 基于unix(unix-->minix-->linux(linus :林纳斯 芬兰 )),可以定制内核
3. 假如了GNU组织(自由软件组织 ,copyLeft) ,通过GPL(通用公共许可) 许可对外发布
- linux组成
1. linux内核(linus 团队管理)
2. shell :用户与内核交互的接口
3. 文件系统 : ext3、ext4 等 windows 有 fat32 、ntfs
4. 第三方应用软件
- linux操作系统版本
1. 内核版本 (linus 团队管理) 3.8
2. 发行版本 :一些软件公司以内核为基础,再添加一些软件和文档形成发行版本
- red hat : rhel ,centos
- debian : debian,ubuntu(桌面)
- android
二.安装linux系统
1. vmware安装 : 创建虚拟机的软件
vitual box :oracle 公司提供
2. 虚拟机安装
- 直接安装
- 创建虚拟机
- 安装ubuntu镜像
- 打开虚拟机镜像: 虚拟机+操作系统(ubuntu)
1. 打开*.vmx 文件
2. 用户名 haijin 密码 123
三.linux系统环境
默认有6个命令交互通道和一个图形界面交互通道,默认进入到的是图形界面通道
命令交互模式切换:ctrl+alt+f1---f6
图形交互界面 ctrl+alt+f7
1.图形界面交互模式
- terminal: 图形界面的命令终端,它是图形界面交互通道的延伸,要依赖于图形界面
2.命令交互模式
命令提示符:
haijin@ubuntu:~$
- haijin:用户名
- ubuntu :主机名
- ~ :路径 ,假如当前的路径正好是 该用户存放数据的根目录 ,则显示~
- $ :用户的类型 $代表普通用户 # 代表 超级用户
3.linux文件系统
- 目录结构
- 文件权限分析
w :可写 r: 只读 x:可执行 - :无权限
文件权限
1. 字符表示法
drwxr-xr-x
第一个字符 :文件的类型 d :普通文件 - :文件夹 c :串口文件 l :连接文件
2-4 字符 : 该文件的属主用户的权限
5-7 字符 : 与属主用户同一组的其他用户的权限
8-10 字符 : 不同组的其他用户的权限
2. 数字表示法
-rw-r--r-- :文件的默认权限 644
drwxr-xr-x : 目录的默认权限 755
四、linux的常用命令
1.注销、关机、重启
- 注销 :logout :登出 、exit
- 关机 :
shutdown - h 时间
- h :关机
- 时间 :
1. now :马上
2. 12.30 :指定具体时间
3. 3 :几分钟以后
sudo : superuser do :由超级用户来执行该命令
要配置sudo 命令 : 授权 哪些用户能执行哪些命令
由超级用户配置 sudo
/etc/sudoers
sudo shutdown -h now 当前账号:itcast
- 重启 :
shutdown -r 时间
-r :restart
2.linux基本命令 :文件操作命令
1. ls : 查看目录内容
- l :查看详细信息
- a :查看所有文件(隐藏)
man :manual : 手工,帮助 ,帮助命令,好比windows help
命令: man ls
2. mkdir :创建目录
Desktop:
- java
- JEE : aa.txt bb.txt
- Android
3. cd 切换目录
- cd .. 记得要加空格
- cd ./java 进入当前目录的子目录
- cd ../xxx 进入上一级目录的子目录
tab :自动补全
4. touch :创建一个空白的普通文件
touch aa.txt
5. echo :把内容重定向到指定的文件中 ,有则打开,无则创建
6. cat、more :查看文件内容
- cat :查看文件内容
- more :分页查看文件内容,按空格键换页
7. cp、mv、rm
- cp :复制
cp bj.txt ./java/jee
- mv :剪切、重命名
1. 剪切 :mv aa.txt ../android/
2. 重命名 :假如剪切的文件 存放在同一个目录中 ,则是重命名
mv bb.txt cc.txt
- rm :删除文件或者文件夹
-f : 假如要删除的文件不存在,也不提示
-i : 删除前提示 ,默认不删除,要删除,输入y
-d : 删除空白目录
-r :递归删除
8. wc :word count :统计字符数
154 233 3418
- 154 :行数
- 233 :单词数
- 3418 :字符数
命令: wc bj.txt
9. ln :创建连接文件
- 默认创建的是硬连接,好比复制 ,但是两个文件会同步
命令:ln ./java/android/aa.txt aaa
- s :创建的是软连接
10. pwd :查看当前目录的绝对路径
11. 管道命令 |
命令: ls -la | wc
12. 重定向
- > :覆盖模式
命令: echo "ww">aaa
- >>:追加模式
命令: echo "ww">>aaa
13. passwd :设置密码 ,ubuntu默认 root账号是没有开启 ,只要设置root密码即可开启
sudo passwd root
14. su 切换目录
su root
root用户切换到其他账号不需要密码
3.linux 系统命令
1.stat :查看文件的详细信息
stat bj.txt
2.who与whoami
who : 查看在线的用户
whoami :查看当前自己的用户
3.hostname : 显示主机名
hostname
4.uname :显示系统信息
-a :显示完整的系统信息
5.top :显示当前耗时的进行的信息 ,每3秒刷新一次
cltr+c 中断
6.ps :显示当前进程的快照
- axu
7.du :显示文件的大小信息
8.df :磁盘使用情况 disk free
9.ifconfig :查看或者配置网卡信息 ,好比windows 的ipconfig
ipv4:32位 2-32次方 ipv6 128位 是 ipv4 2-96次方倍数
设置虚拟机ip地址:
1. 设置vmware的连接方式
- 共享宿主机的ip地址,在网上邻居找不到
- 桥接方式,需要单独设置ip,可以在网上邻居查找
2. 图形界面设置ip地址
edit connection --》ipv4--》manual(手工设置)--》add (ip地址,子网掩码)
3.命令方式设置ip地址
静态设置ip:
sudo ifconfig eth0 192.168.15.122 netmask 255.255.255.0
10.ping 测试与目标主机连接情况
11.clear : 清除屏幕 windows: cls
12.man :帮助命令
man 命令
13.kill :杀死进程
kill pid
14.netstat :网络连接详细信息
15. useradd
- 查看用户信息
sudo cat /etc/passwd
itcast:x:1000:1000:UbuntuA,,,:/home/itcast:/bin/bash
- itcast:用户名
- x :密码 :已经加密 ,密码存放在 /etc/shadow
- 1000: 账号id ,userId
- 1000: 组id ,group id
- UbuntuA,,, :账号描述
- /home/haijin :该账号存放文件的默认位置 ~
- /bin/bash:该用户的shell脚本的解析方式 ,sh 、bash、rbash
- 创建用户
sudo useradd lijun -d /home/lijun -s /bin/bash
-d :指定该用户的home 路径
- s :该用户的shell解析方式
步骤:
1. 创建 /home/lijun 目录
2. 执行 useradd 命令
3. 用 passwd 设置密码
4. su 切换用户
五、打包、压缩文件
windows : zip、rar
linux :gz ,bzip,zip
1.tar :打包、拆包命令
tar - cxzjvf <打包后的文件> <欲打包的目录>
- c :创建的一个归档文件 ,即打包文件夹
- x :拆包
- z :以gzip 格式压缩,默认压缩倍数 6倍 (0-9)
- j :以bzip2格式压缩
- v :显示打包或者拆包的文件信息
- f : 后面紧接一个 归档文件
- 打包文件
tar -cvf news.tar ./java 摘要
- 拆包文件
tar -xvf news.tar
2.gzip 、bzip2 压缩与解压
1. 压缩文件
gzip news.tar
2. 解压文件
gzip -d news.tar.gz
-d :解压
3.打包及压缩
- 打包及压缩
tar -czvf news.tar.gz ./java
- 拆包及压解缩
tar -xzvf news.tar.gz
六、软件管理
windows : .exe 安装 、卸载
安装: mysql.exe cc.exe
卸载 : 该软件唯一的标识 ,包名 alibaba
android : *.apk 卸载 包名
red hat :*.rpm
ubuntu : 对debian的升级 *.deb 格式
1.安装软件
- dpkg :debian package
离线安装:
安装 : sudo dpkg - i <文件名>
-i :install
命令:sudo dpkg -i ./tree_1.6.0-1_i386.deb
卸载 : sudo dpkg - r <包名>
-r :remove
命令:sudo dpkg -r tree
- apt-get :advance package tools
对dpkg命令的升级,在线安装
安装 : sudo apt-get -install <包名>
卸载 : sudo apt-get -remove <包名>
2.vim 软件 :好比记事本 ,但是比记事本要强大
1. 安装vim
2. 使用vim
操作模式:
1. 一般模式 ,默认进入的一般模式,该模式不能编辑文档 ,只能查看
按 i(insert) 进入 插入模式
2. 编辑模式、插入模式
该模式可以编辑文档,按esc 退出插入模式,进入到一般模式
3. 命令模式 :在 一般模式中按:进入命令模式
- q: 安全退出,当没有操作该文档,则直接按q退出vim
- q!:当修改了内容,但是不想保存,则q!强制退出
- wq :保存退出
- set number 显示行号
- set nonumber 取消行号显示
七、搭建Java服务器,并且实现远程安全访问linux系统
1.通过ssh实现安全远程访问linux系统
ssh :secure shell
加密:
1. 对称加密 (加密密钥与解密密钥相同)
des 、aes
2. 非对称加密(加密密钥与解密密钥不同)
RSA :公钥、私钥
数字摘要:
md5 sha1
1. 查看是否安装了ssh服务端与客户端
sudo apt-cache policy openssh-client openssh-server
2. 安装ssh 服务端与客户端软件
sudo dpkg -i ./ssh/*
3. 通过windows ssh客户端来访问linux服务端
- putty :远程登录
- winscp433setup.exe :文件传输
2. 安装jdk
进入 root用户
实现步骤:
1. jdk 存放在哪里 /opt
2. 把软件拷贝到/opt
3. 绿色软件,解压
4.设置环境变量
vim /etc/profile
export JAVA_HOME="/opt/jdk1.6.0_39"
export PATH="$JAVA_HOME/bin:$PATH"
5. 刷新配置 ,让配置生效
source /etc/profile
6. 编写Demo.java,测试
-javac Demo.java
- java Demo
3. 安装tomcat
步骤:
1. 安装在哪里 /opt
2. 拷贝、解压
tar -xzvf apache-tomcat.tar.gz
3. 运行
- ./startup.sh
- ./shutdown.sh
4. 安装Eclipse
步骤:
1.安装在/opt
2. 拷贝、解压
cp eclipse.tar.gz /opt
tar -xzvf eclipse.tar.gz
重点:
1.linux系统环境
命令交互通道
命名提示符
2. linux 目录结构、文件权限
drwxr-xr-x
3. linux 命令
- 开关机
- 文件操作
- 系统命令
1. top 2. who 3. ifconfig 4. ping 5. kill 6. man 7.clear 8.netstat
4. 软件管理
- dpkg :离线 .deb .rpm .apk
- apt-get :在线
5. 压缩解压
tar -cxgzvf 打包后的文件 要打包的文件
6. vim 的使用
三种模式
7. ssh理解 secure shell
8. java开发环境搭建
2023-01-09 start
如何在 Windows 和 Linux 上查找哪个线程cpu利用率最高?
windows上面用任务管理器看,linux下可以用 top 这个工具看。
找出cpu耗用厉害的进程pid, 终端执行top命令,然后按下shift+p (shift+m是找出消耗内存
最高)查找出cpu利用最厉害的pid号
根据上面第一步拿到的pid号,top -H -p pid 。然后按下shift+p,查找出cpu利用率最厉害的
线程号,比如top -H -p 1328
将获取到的线程号转换成16进制,去百度转换一下就行
使用jstack工具将进程信息打印输出,jstack pid号 > /tmp/t.dat,比如jstack 31365 >
/tmp/t.dat
编辑/tmp/t.dat文件,查找线程号对应的信息
或者直接使用JDK自带的工具查看“jconsole” 、“visualVm”,这都是JDK自带的,可以直接在JDK的bin目录
下找到直接使用
end
2023-04-03 start:
1. 使用 top 命令查看当前 CPU 使用率:
打开终端,输入 top 命令,可以看到当前 CPU 的使用率和哪个进程占用的 CPU 比较高。
```
$ top
```
2. 使用 jstack 工具查看 Java 进程的线程状态:
在终端输入以下命令,查看 Java 进程的线程状态:
```
$ jstack <pid>
```
其中 `<pid>` 是 Java 进程的进程号。 jstack 命令会输出 Java 进程内的所有线程信息,包括线程的状态、哪些方法当前正在执行等。
3. 使用 jstat 查看 JVM 的状态:
在终端输入以下命令,查看 JVM 的状态:
```
$ jstat -gc <pid> <interval> <count>
```
其中 `<pid>` 是 Java 进程的进程号,`<interval>` 是输出间隔时间(单位为毫秒),`<count>` 是输出次数。 jstat 命令会输出 JVM 的状态,包括内存使用情况、垃圾回收情况等。
4. 使用 jmap 命令查看 Java 进程的内存状况:
在终端输入以下命令,查看 Java 进程的内存状况:
```
$ jmap -histo <pid>
```
其中 `<pid>` 是 Java 进程的进程号。 jmap 命令会输出 Java 进程当前的内存使用情况。
5. 使用 jconsole 工具查看 Java 进程的运行状况:
jconsole 是一款 Java 监控和管理工具,可以通过图形界面以更直观的方式查看 Java 进程的运行状况。在终端输入以下命令启动 jconsole 工具:
```
$ jconsole
```
在打开的 jconsole 窗口中,选择目标 Java 进程,可以查看其运行状态、线程状态、内存使用情况等。 ♨
end
2023-08-25 start
之前一直用finallshell 但是吃内存太严重了,所以现在换成了下面这个
WindTerm ssh工具:
https://link.zhihu.com/?target=https%3A//github.com/kingToolbox/WindTerm/releases
end
2024-06-25 start:
基本命令
cd (change directory:英文释义是改变目录)切换目录
pwd (print working directory:显示当前工作目录的绝对路径)
ls (ls:list的缩写,查看列表)查看当前目录下的所有文件夹(ls 只列出文件名或目录名)
ll (ll:list的缩写,查看列表详情)查看当前目录下的所有详细信息和文件夹(ll 结果是详细,有时间,
是否可读写等信息)
touch (touch:创建文件)创建文件
mkdir (mkdir:创建目录) 创建目录
cat (concatenate:显示或把多个文本文件连接起来)查看文件命令(可以快捷查看当前文件的内
容)(不能快速定位到最后一页)
more (more:更多的意思)分页查看文件命令(不能快速定位到最后一页)
cd ../ ;跳到上级目录
cd /opt ;不管现在到那直接跳到指定的opt文件夹中
cd ~ ;切换当前用户的家目录。root用户的家目录就是root目录。
pwd
显示当前的绝对路劲
ls -a ;显示所有文件夹,隐藏文件也显示出来
ls -R ;连同子目录一起列出来
ll -a ;显示所有文件,隐藏文件也显示出来
ll -R ;连同子目录内容一起列出来
ll -h ;友好展示详情信息,可以看大小
ll -al ;即能显示隐藏文件又能显示详细列表。
touch test.txt ;创建test.txt文件
touch /opt/java/test.java ;在指定目录创建test.java文件
mkdir 文件夹名称 ;在此目录创建文件夹
mkdir /opt/java/jdk ;在指定目录创建文件夹
cat lj.log ;快捷查看文件命令
Ctrl + c ;暂停显示文件
Ctrl + d ;退出查看文件命令less (lese:较少的意思)分页查看文件命令(可以快速定位到最后一页)
tail(尾巴) 查看文件命令(看最后多少行)
cp(copy单词缩写,复制功能)
mv(move单词缩写,移动功能,该文件名称功能)
rm(remove:移除的意思)删除文件,或文件夹
find (find:找到的意思)查找指定文件或目录
回车:向下n行,需要定义,默认为1行。
空格键:向下滚动一屏或Ctrl+F
B:返回上一层或Ctrl+B
q:退出more
less -m 显示类似于more命令的百分比。
less -N 显示每行的行号。(大写的N)
两参数一起使用如:less -mN 文件名,如此可分页并显示行号。
空格键:前下一页或page down。
回车:向下一行。
b:后退一页 或 page up。
q:退出。
d:前进半页。
u:后退半页
tail -10 ;文件名 看最后10行
cp /opt/java/java.log /opt/logs/ ;把java.log 复制到/opt/logs/下
cp /opt/java/java.log /opt/logs/aaa.log ;把java.log 复制到/opt/logs/下并且改名为
aaa.log
cp -r /opt/java /opt/logs ;把文件夹及内容复制到logs文件中
mv /opt/java/java.log /opt/mysql/ ;移动文件到mysql目录下
mv java.log mysql.log ;把java.log改名为mysql.log
-f或--force 强制删除文件或目录。删除文件不包括文件夹的文件
-r或-R或--recursive 递归处理,将指定目录下的所有文件及子目录一并删除。
-rf 强制删除文件夹及内容
rm 文件名 ;安全删除命令 (yes删除 no取消)
rm -rf 强制删除文件夹及内容
rm -rf * 删除当前目录下的所有内容。
rm -rf /* 删除Linux系统根目录下所有的内容。系统将完蛋。vi (VIsual:视觉)文本编辑器 类似win的记事本 (操作类似于地下的vim命令,看底下vim 的操
作)
vim (VI IMproved:改进版视觉)改进版文本编辑器 (不管是文件查看还是文件编辑 按 Shift + 上或
者下可以上下移动查看视角)
| 管道命令(把多个命令组合起来使用)
* 表示0~多个任意字符。
find -name 文件名;按照指定名称查找在当前目录下查找文件
find / -name 文件名按照指定名称全局查找文件
find -name '*文件名' ;任意前缀加上文件名在当前目录下查找文件
find / -name '*文件名*' ;全局进行模糊查询带文件名的文件
输入”vim 文件名” 打开文件,刚刚时是”一般模式”。
一般模式:可以浏览文件内容,可以进行文本快捷操作。如单行复制,多行复制,单行删除,多行删除,(退
出)等。
插入模式:可以编辑文件内容。
底行模式:可以进行强制退出操作,不保存 :q!
可以进行保存并退出操作 :wq
按下”i”或”a”或”o”键,从”一般模式”,进入”插入模式(编辑模式)”。
在编辑模式下按”Esc” 即可到一般模式
在一般模式下按”:”,冒号进入底行模式。
在一般模式下的快捷键
dd ;删除一整行
X ;向前删除 等同于windowns系统中的删除键
x ;向后删除和大写x相反方向
Ctrl + f ;向后看一页
Ctrl + b ;向前看一页
u ;撤销上一步操作
/word ;向下查找word关键字 输入:n查找下一个,N查找上一个(不管是哪个查找都是全局查找 只不过
n的方向相反)
?log ;向上查找log关键字 输入:n查找上一个,N查找下一个
:1,90s/redis/Redis/g ;把1-90行的redis替换为Redis。语法n1,n2s/原关键字/新关键字/g,n1
代表其实行,n2代表结尾行,g是必须要的
:0 ;光标移动到第一行
:$ ;光标移动到最后一行
:300 ;光标移动到300行,输入多少数字移动到多少行
:w ;保存
:w! ;强制保存
:q ;退出
:q! ;强制退出
5dd ;删除后面5行,打一个参数为自己填写
5x ;删除此光标后面5个字符
d1G ;删除此光标之前的所有
d0 ;从光标当前位置删除到此行的第一个位置
yy ;复制
p ;在光标的下面进行粘贴
P ;在光标的上门进行粘贴grep (grep :正则表达式)正则表达式,用于字符串的搜索工作(模糊查询)。不懂可以先过
yum install -y lrzsz 命令(实现win到Linux文件互相简单上传文件)
tar (解压 压缩 命令)
ps (process status:进程状态,类似于windows的任务管理器)
管道命令的语法:命令1 | 命令2 | 命令3。
单独使用:
grep String test.java ;在test.java文件中查找String的位置,返回整行
一般此命令不会单独使用下面列几个常用的命令(地下通过管道命令组合起来使用)
ps aux|grep java ;查找带java关键字的进程
ll |grep java ;查找带java关键字的文件夹及文件
#(实际上就是在Linux系统中下载了一个插件)下了了此安装包后就可以实现win系统到linux之间拉文件拉
文件
#等待下载完了就可以输入:
rz 从win系统中选择文件上传到Linux系统中
sz 文件名 选择Linux系统的文件复制到win系统中
常用的组合命令:
-z 是否需要用gzip压缩。
-c 建立一个压缩文件的参数指令(create) –压缩
-x 解开一个压缩文件的参数指令(extract) –解压
-v 压缩的过程中显示文件(verbose)
-f 使用档名,在f之后要立即接档中(file)
常用解压参数组合:zxvf
常用压缩参数组合:zcvf
解压命令:
tar -zxvf redis-3.2.8.tar.gz ;解压到当前文件夹
tar -zxvf redis-3.2.8.tar.gz -C /opt/java/ ;解压到指定目录
压缩命令:(注意 语法有点反了,我反正每次都搞反)
tar -zcvf redis-3.2.8.tar.gz redis-3.2.8/ ;语法 tar -zcvf 压缩后的名称 要压缩的
文件
tar -zcvf 压缩后的文件(可指定目录) 要压缩的文件(可指定目录)
常用组合:ps -ef 标准的格式查看系统进程
ps -aux BSD格式查看系统进程
ps -aux|grep redis BSD格式查看进程名称带有redis的系统进程(常用技巧)
//显示进程的一些属性,需要了解(ps aux)
USER //用户名
PID //进程ID号,用来杀死进程的
%CPU //进程占用的CPU的百分比
%MEM //占用内存的的百分比clear 清屏命令。(强迫症患者使用)
ifconfig命令
ping (用于检测与目标的连通性)语法:ping ip地址
free 命令 (显示系统内存)
top 命令
netstat 命令
VSZ //该进程使用的虚拟內存量(KB)
RSS //该进程占用的固定內存量(KB)
STAT //进程的状态
START //该进程被触发启动时间
TIME //该进程实际使用CPU运行的时间
kill 命令用来中止一个进程。(要配合ps命令使用,配合pid关闭进程)
(ps类似于打开任务管理器,kill类似于关闭进程)
kill -5 进程的PID ;推荐,和平关闭进程
kill -9 PID ;不推荐,强制杀死进程
用于查看和更改网络接口的地址和参数,包括IP地址、网络掩码、广播地址,使用权限是超级用户。(一般是
用来查看的,很少更改)
如果此命令输入无效,先输入yum -y install net-tools
ifconfig
测试:
1、在Windows操作系统中
end