Linux学习笔记

·  阅读 92

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源码的编译

MySql服务器

分类:
阅读
标签:
分类:
阅读
标签: