Linux默认不允许在桌面环境登录root用户
加上#号
保存
继续在终端敲入
gedit /etc/pam.d/gdm-password
加上#号
保存
重启
可执行脚本
脚本Script ,一种解释执行的程序 Linux下常见的三种脚本程序
- Shell脚本.sh
- Perl脚本.pl
- Python脚本.py
脚本程序,本质是一个文本文件
- 1它是一个文本文件
- 2它具有可执行权限
演示:hello.sh是一个脚本程序。
脚本程序都是由解释器来执行的
- Shell脚本解释器:/bin/sh
- Perl脚本解释器:/bin/perl
- Python脚本解释器:/bin/python3
执行一个脚本时,以下两种方式等效
- ./hello.py
- /bin/python3 hello.py
Shell脚本
-
Shell脚本,按Shell的语法写出来的脚本
-
是Linux自带的脚本语言
-
相当于Windows下的DOS批处理脚本
第一行是声明解释器
先加上可执行(x)权限再运行,执行的时候必须加上路径
SHELL中的变量
SHELL,是一个脚本编程语言
- 定义变量
- 执行命令
- if判断逻辑,while循环逻辑
- 自定义的函数...
用户环境变量
用户环境变量:定义在~/.profile中
在主目录下
- ls -a
- 其中,a表示all,显示所有文件
- 注:在Linux下,以.开头的文件为隐藏文件
保存后注销用户,重新打开后
原理:当用户打开终端时,会自动运行.profile ,将变量注入到当前环境中。
要点与细节
- 此配置只对当前用户有效
- 因为每个用户都有自己的配置文件.profile,有的Linux系统上,使用.bash_profile
系统环境变量
系统环境变量:定义在/etc/profile中
此中的环境变量对所有用户有效
- 以root身份执行gedit /etc/profile
- 但是,一般不直接修改/etc/profile
- 而是在/etc/profile.d/创建一个自定义的脚本
演示:
- 1用gedit创建一个脚本 gedit /etc/profile.d/myprofile.sh
- 2定义环境变量 export TOMCAT=/opt/tomcat
- 3注销并重新登录 重新登录后,环境变量生效
PATH环境变量
先来看一个问题:创建一个可执行脚本hello.sh
直接执行:
明明就在当前目录下,为什么提示找不到?
PATH,最常见的一个环境变量,用于描述可执行程序的搜索路径
echo $PATH
多个路径之间以冒号分隔
usr/local/bin:/usr/local/sbin:/usr/bin:/usr
/sbin
默认地,系统从以下目录中搜索可执行程序
/usr/bin比如,/usr/bin/tar
/usr/sbin比如,/usr/sbin/useradd
/usr/local/bin
/usr/local/sbin
其中,sbin为超级用户root才能执行的程序
/usr/下系统自带的程序,/usr/local/是用户安装的程序
演示:修改PATH环境变量
- 编辑
/etc/profile.d/myprofile.sh设定PATH环境变量export PATH=$PATH :/opt/tomcat/bin - 注销,重新登录后生效
设置PATH环境变量前
添加PATH变量
暴露在当前路径
所以可以直接输入文件名执行
虚拟机网络
VMware软件会创建两个虚拟网卡,VMwarenet1和8
在虚拟机上网的时候借助的是VMwarenet8网卡
可以用ping命令来检测是否有网,可以看到有,然后Ctrl+C退出,可以看见发出去28个包,收到28个包,没有丢包现象。
虚拟机与本机互联
虚拟机IP地址
本机IP地址,命令行输入:ipconfig
查看本地网卡状态,其中VMnet8网卡
注意虚拟机不能ping本地主机,但是本地主机可以ping虚拟机
不过我们可以在本地主机(用的是VM8网卡的IP地址)上起一个服务(端口随便)
这个软件叫HFS
然后在虚拟机通过浏览器访问
NAT上网原理
配置网络
在终端里,以命令行方式来配置网络
常用命令:ifconfig , netstat 等,默认地,Ubuntu下面不带ifconfig命令
需要使用apt软件包管理器
- apt install net-tools安装一个软件包
- apt remove net-tools移除一个软件包
- apt search xxx搜索
- apt list l grep xxx列表
1查看网络配置
ifconfig
其中,if表示interface网络接口,会列出所有的网络接口,及各个接口的状态
2开启/禁用网络
sudo ifconfig xxx up
sudo ifconfig xxx down
FTP和SSH服务器
思考:怎么把文件传到Ubuntu主机上? 1.U盘拷贝 2.网络传输
- FTP
- SFTP
演示:使用FTP来传输文件
- 客户端 FileZilla (Windows)
- 服务器 vsftpd ( Ubuntu )
SSH服务器
这个比FTP方便
演示:
- 使用Xshell远程登录
- 使用Xftp传输文件
SSH 为建立在应用层和bai传输层基du础上的安全协议,SSH采用面向zhi连接dao的TCP协议传输 应用内22号端口,安全系数较容高。
FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”。TCP/IP协议中,FTP占用两个端口,FTP标准命令TCP端口号为21,Port方式数据端口一般为20。虽然FTP在控制连接方面可以通过SSL加密,但是FTP在通过数据端口传输数据时是不加密的。可以使用SSH为FTP数据传输进行加密,即:SFTP。
当然 SSH除了作为安全协议以外,有时还被作为一种应用,对于开启SSH服务的设备或系统,可能在终端通过SSH客户端软件进行连接,类似于TELNET,甚至还有传输文件的功能。我常用这个连接LINUX服务器和路由。
文本编辑 vim
- vi / vim,一个基于控制台的文本编辑器
- gedit ,一个基于GUI的文本编辑器
- 其中,vim是vi的升级版
切换模式
- 编辑模式Insert Mode:按i键
- 命令模式Command Mode:按ESC键
退出编辑
(1)按ESC键,进入命令模式
(2)- 输入:wq保存并退出
- 输入
:q退出 - 输入
:q!强制退出(放弃保存)
vim更多用法
vim 的完全用法非常复杂,花样繁多,几乎键盘上的每一个键都是快速键,不建议深入研究, vim本身是一个低效率的工具
Linux文本文件的编辑
1桌面环境: gedit
2终端环境:
- 少量修改:vim
- 大量修改:在Windows上编辑,然后上传到Linux
打开Xshell
拖拽
注意格式转换!
文本文件的换行符
- Windows : \r\n
- Linux : \n 可以在Notepad++里观察到此区别,视图|显示符号|显示行尾符
换行符的转换:
上传文件到Linux的时候先转换格式
编辑|文档格式转换|转换为UNIX格式
注意:只有在编辑SHELL脚本时,才需要转,其他格式的文件一般都不需要转换,如*.xml, *.java
Java的安装
- jre:运行Java程序的时候需要
- jdk:开发Java程序的时候需要 一般建议安装8版本,比较稳定,Ubuntu只要下载jre就行了,只要在它上面运行代码就行了
安装openjdk-8-jre-headless
ls /usr/bin/java
默认放在/usr/bin下,不需要额外设置PATH
提示:如果放在自定义位置,需要设置PATH
export PATH-$PATH:/opt/jdk8/binr
1在 Windows上开发和调试
2发布
- class文件
- 普通JAR文件/可执行JAR文件 两种JAR文件的运行方式不同:
java -cp your_program.jar your.MainClass
java -jar your_program.jar
3上传至Linux : FTP/SFTP
4运行程序
java -jar simple.jar
5权限因素,自行检查
程序里需要访问系统文件,如/etc/,得用root运行, 程序里需要开启TCP端口,如80,得用root运行
注意,Java GUI的程序不能在终端里运行
但是我们一般用脚本来运行Java程序包,比如下面这个脚本就是专门用来运your_app.jar这个包
把脚本通过Xftp发送给Linux
加权限,运行脚本
chmod +x run_java.sh
. /run_java.sh
程序与进程
程序Program:指一个程序文件,如notepad.exe
进程Process:当一个程序运行起来,在操作系统内创建一条记录,用于描述和控制它的运行
启动一个程序
输入命令查看Linux所有进程
ps -ef
按开始运行时间排序
可以找到刚才开启的进程
其中,各个字段的含义:
- UID:执行者
- PID:进程ID
- PPID:父进程ID
- STIME:启动时间
- CMD:启动时调用的命令行
ps -f | grep ×××
进程监视
其中,将前者输出的信息,重定向给grep命令过滤处理
top命令,相当于Windows的任务管理器 查看所有进程top
- 按上下键翻阅
- 按q或CTRL+C中止退出
查看某个进程(通过进程号)
top -p PID
结束某个进程
kill -9 PID
前台进程和后台进程
前台进程:运行在前台
后台进程:运行在后台
演示:比如运行tomcat服务器
-
./run_tomcat run以前台(也就是当前的终端)方式运行(CTRL+C中止) -
./run_tomcat start以后台方式运行 -
区别1:有无控制台
前台进程:有控制台,输出至当前终端
后台进程:无控制台,看不到输出
- 区别2:有无父进程
前台进程:有父进程,父进程即为当前终端 当终端关闭时,前台进程被一同关闭
使用CTRL+C强行终止
后台进程:父进程为系统进程(1号进程) 当终端关闭时,后台进程不受影响
使用kill -9 PID 强行终止
服务器
redis服务器
Redis ,一款基于内存的Key-Value型数据库
- redis服务器的安装
- redis的配置
- redis源码的编译