Linux入门到精通---韩天峰视频学习笔记

我的有道云笔记链接:http://note.youdao.com/noteshare?id=ecc484a907b1dd39e30af1273fddd719(原链接里面有相应的图片 以下只是文字描述,具体详情请看链接内容)

特点 : 免费的 开源的 支持多线程多用户 安全性好 对内存和文件管理优越

缺点:操作相对困难

linux 最小只需要4M -->嵌入式开发

1973 --->unix (中国移动的后台操作系统)

1991-1994---》linux  linux is not unix

root  密码:Ly959126

约瑟夫问题(丢手帕问题)

网络设置文件位置

/etc/sysconfig/network-scripts/ifcfg-ens33

vi /etc/sysconfig/network-scripts/ifcfg-ens33

ens33是设备号 可以自行更改

onboot = yes 当机器启动时网卡是否生效

BOOTPROTO = static 是网卡指定分配ip

BOOTPROTO = dhcp  在网卡启动的时候 有操作系统自动分配一个ip地址  好处是:假设在同一个局域网的情况下,自动会看哪些ip地址没有使用 会自动分配一个空闲的

如何更改文件ifcfg-ens33中 BOOTPROTO的属性值?red hat里面

  输入命令:setup

退出后 需要输入命令:/etc/rc.d/init.d/network restart  使修改的生效

注意:当你更改了ifconfig-ens33文件的ip地址后,保存退出(这是永久性的修改),输入命令:ifconfig  显示的ip地址还是没有改变  这是因为只要是涉及永久性修改一定要运行一下网卡 需要输入命令:/etc/rc.d/init.d/network restart

网络站点设置:

/etc/httpd/conf/http.conf

centos 7

查看防火墙服务状态

systemctl status firewalld

查看firewall状态

firewall-cmd --state

重启防火墙

firecall-cmd --reload

关闭防火墙

systemctl disable firewalld

systemctl stop firewalld

查找某个文件的路径

find / -name "Hello.java"

使用locate搜索linux系统中的文件,它比find命令快。因为它查询的是数据库(/var/lib/locatedb),数据库包含本地所有的文件信息。使用locate命令在根目录下搜索interfaces文件的命令为”locate interfaces“

使用”whereis“命令可以搜索linux系统中的所有可执行文件即二进制文件。使用whereis命令搜索grep二进制文件的命令为”whereis grep“。

使用which命令查看系统命令是否存在,并返回系统命令所在的位置。使用which命令查看grep命令是否存在以及存在的目录的命令为”which grep“。

删除文件 rm

站点位置

/var/www/

apache 配置文件

/etc/httpd/conf/httpd.conf

查看本机局域网ip地址

cmd命令行: ipconfig /all    --->以太网的 IPv4地址

查看本地局域网中的所有与本机通信的计算机IP地址

cmd命令行:arp -a

c 程序例子:

#include <stdio.h>

int main(){

printf("hello!");

return 0;

}

c程序如何在linux虚拟机上编译:gcc Hello.cpp

所在的目录结构上会出现 a.out

c程序如何在虚拟机上运行  格式 : ./a.out

注意 当编译c程序时 , 默认会生成a.out 所以 你再编译第二个c程序的时候 第二个c程序就会将第一个c程序覆盖掉

这个时候需要将编译的c程序输出时 特定一个名称 防止被覆盖掉

gcc -o my Hello2.cpp (-o o在这里指的是output  输出的是名字为my 的编译文件)

gcc 是做什么用的:

GCC(GNU Compiler Collection,GNU编译器套件),是由 GNU 开发的编程语言编译器。它是以GPL许可证所发行的自由软件,也是 GNU计划的关键部分。目前可以编译的语言包括:C, C++,Objective-C, Fortran, Java, and Ada。

GCC原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器,GCC同样适用于微软的Windows。GCC是自由软件过程发展中的著名例子,由自由软件基金会以GPL协议发布。

GCC功能与作用:

1、预处理

命令gcc首先调用cpp进行预处理,在预处理过程中,对源代码文件中的文件包含(include)、预编译语句(如宏定义define等)进行分析。

2、编译

用GCC编译C/C++代码时,它会试着用最少的时间完成编译并且编译后的代码易于调试。易于调试意味着编译后的代码与源代码有同样的执行顺序,编译后的代码没有经过优化。

3、连接

当所有的目标文件都生成之后,gcc就调用ld来完成最后的关键性工作,这个阶段就是连接。在连接阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到的库函数也从各自所在的档案库中连到合适的地方。

4、汇编

汇编过程是针对汇编语言的步骤,调用as进行工作,一般来讲,.S为后缀的汇编语言源代码文件和汇编、.s为后缀的汇编语言文件经过预编译和汇编之后都生成以.o为后缀的目标文件。

gcc所遵循的部分约定规则:

1、.c为后缀的文件,C语言源代码文件。

2、.a为后缀的文件,是由目标文件构成的档案库文件。

3、.h为后缀的文件,是程序所包含的头文件。

4、.i 为后缀的文件,是C源代码文件且不应该对其执行预处理。

5、.m为后缀的文件,是Objective-C源代码文件。

6、.o为后缀的文件,是编译后的目标文件。

7、.s为后缀的文件,是汇编语言源代码文件。

目录结构:

命令dir 显示当前目录下的文件结构

显示当前在哪个目录下 : pwd

linux 用户管理

添加用户必须是root权限下的用户才能新建用户

添加用户:useradd 用户名

设置密码:passwd 用户名

删除用户:userdel 用户名

    userdel -r 用户名 (删除用户以及用户主目录)

退出:logout

命令: init [0123456]

运行级别:

0:关机

1:单用户

2:多用户状态没有网络服务

3:多用户状态有网络服务

4:系统未使用保留给用户

5:图形界面

6:系统重启

常用的运行级别是3和5 要修改默认的运行级别可改文件/etc/inittab

grep -n "hello" Hello.cpp  -n 返回指定数据所在文件位置的行号

manual 相当于手册 ---》 man 命令相当于doc下的help    man grep

重定向命令

将结果保存到文件里:

> 文件名称

>> 文件名称 将结果追加到指定文件的末尾

例子:grep -n "hello" Hello.cpp > kkk.bak    将> 前面的结果保存到kkk.bak里面

第一节习题:

c语言常识:

system是C函数库stdlib.h、process.h中的一个函数。具体解释如下:

int system(char *command):将MSDOS命令command传递给DOS执行。

而pause是DOS下的一个命令。功能是:暂停批处理的执行,显示一个中文信息:“请按任意键继续. . .”,或者英文信息:“Press any key to continue . . .”

简单的说:就是暂停程序的执行,等待任意健继续执行。

#include <stdio.h>

#include <stdlib.h>

头文件是扩展名为.h的文件 包含了C函数声明和宏定义 被多个源文件中引用共享

有两种类型的头文件:程序员编写的头文件和编辑器自带的头文件

这两个头文件分别代表什么:

是标准输入输出头文件。平时写C语言时,用到的printf() 和scanf()都是系统定义好的,而这些函数的定义就包含在stdio.h这个文件中。它是标准的输入输出库,包含了c语言的输入输出函数原型,要进行io操作必须包含此头文件。

standard library 标准库头文件 stdlib.h里面定义了C C++语言的五种变量类型 一些宏 和 通用工具函数。类型例如size_twchar_t、div_t、ldiv_t和lldiv_t; 宏例如EXIT_FAILURE、EXIT_SUCCESSRAND_MAX和MB_CUR_MAX等等; 常用的函数如malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等等。

文件权限 用户组

添加组:groupadd 组名

查看linux中所有的组信息:cat /etc/group   

编辑linux中所有的组信息:vi /etc/group

vi /etc/group | more

创建用户并同时指定将该用户分配到哪个组

useradd -g 组名 用户名

查看linux中所有的用户信息

vi /etc/passwd    cat /etc/passwd

例子:

camellia 代表用户

x 代表隐藏的密码

1000 代表用户id

1000 代表组id

两个:之间的空白代表 没有注释

/home/camellia 代表该用户的主目录

/bin/bash 代表该用户所使用的shell解析器

linux命令 (cp mkdir)

          |

  |

  \/

shell

  |

  |

  \/

linux 内核

-rw-r--r--    划分 -      rw-        r--        r--

-:代表文件类型

rw-:代表文件的所有者对该文件的权限

r--:代表文件所在组对该文件的权限

r--:代表其他组的用户对该文件的权限

权限分为三种:r  可读 用4表示

    w 可写 用2表示

    x  可执行 用1表示

说明akai文件夹的权限只有akai自己这个用户有可读可写可执行的权限 所在组的成员和其他组成员没有任何权限

现在修改akai文件夹的权限 : chmod 777 akai

但是会报错:因为目前登录的用户是ayong 所以没有权限改变akai的文件权限

此时应该退出ayong用户 登录akai用户

在 home文件夹下 修改akai文件夹的权限  chmod 777 akai

如何修改文件的访问权限问题?

        目前登录ayong 这个用户  用 ls -l 查看到akai用户下的文件情况 mytest1.java 的权限是 -rw-r--r--

所以用户ayong 无法编辑mytest1.java 这个文件 所以需要退出ayong这个用户 然后登录akai这个用户 更改这个mytest1.java的权限 : chmod 660 mytest1.java

添加用户时可以指定将该用户添加到哪个组中 同样用root的管理权限可以改变某个用户所在的组:

usermod -g 组名 用户名

改变该用户登录的初始目录:

usermod -d 目录名 用户名

改变文件所有者:

chown 用户名 文件名

查看文件的所有者

ls -ahl

改变文件所在组:

chgrp 组名 文件名

练习中遇到的问题 为组添加用户 时  用户名必须是一个字符串 不能是空格 比如 Tang Monk就不可以

发现一个问题 当沙僧转变成monster(妖怪组)的时候 kong文件夹的权限是770 771 都是不行的 Kong文件夹权限为777的时候才能打开 kong文件夹  但是 kong和Sha的属组都是monster啊 这是什么原因呢?

在linux下开发java程序 需要安装jdk

1.将mypackage.iso 挂载到linux操作系统上

2.。。。

查找以sh为结尾的文件  : ls -l /bin/*sh

查看目前使用的是哪种shell : env (该命令可以显示当前操作系统的环境变量)

shell分类:csh /  ksh / sh

改变shell

chsh -s /bin/csh

当命令忘记时  你可能只记住几个字母

比如你忘记mkdir  你只记住m开头的  此时需要打出m 快速敲击两次tab键 就能出来所有m开头的命令

希望知道曾经使用的命令 : history命令

显示最近执行的十个命令:history 10

执行编号为861的命令 : !861

tcp/ip的由来:

计算机和计算机之间的交流是通过 通讯协议

最重要的不可或缺的通讯协议就是 tcp/ip协议

tcp/ip协议不是一个独立协议 而是一组协议 它包括 tcp(传输协议) ip(ip协议) udp(用户数据包协议) arp(地址解析协议) rarp(反地址解析协议)等。因为tcp 和 ip 协议最重要 也是 最早出现的 所以叫做tcp/ip协议。

tcp/ip 电子书籍:三本书籍 网络安全相关(黑客)

斯蒂文斯:

以下的四层都是每一个计算机都有的:

应用层

传输层

ip层

链路层(靠近网卡)

linux网络环境配置:

我自己虚拟主机的命令是:ifconfig ens33 192.168.88.22

两个网络能够拼通 两个网络一定需要在同一个子网里面

linux中网卡分配的ip是:192.168.1.105

让window能够拼通linux的ip地址:

在cmd里面 ipconfig

会发现:VMnet1 和 VMnet8这两个网卡的ip地址是:192.168.169.1  192.168.128.1

这两个ip地址和linux 网卡指定的ip地址 不在同一个子网中 所以window与linux不能互通

现在我想将VMnet8这个网卡和linux达到互通的目的:

需要进行虚拟机设置 :将网络适配器 (以太网)设置成自定义模式 选择VMnet8网卡

需要将linux网卡指定的ip地址更改 使其ip地址和windows的 VMnet8这个网卡的ip同处于一个子网中。

在虚拟机上输入命令:vi /etc/sysconfig/network-scripts/ifcfg-ens33 修改IPADDR 为192.168.128.(2-255) 保存退出 此时windows和linux的ip同属于一个子网中。

此时:

实现了windows和linux的互通

如何查询linux中安装了哪些rpm软件

rpm -qa (quiry all)

rpm -q mysql 查询是否安装了mysql包

samba就是能够使liux和windows实现资源互享的服务器

在linux安装samba

1.查看是否装了samba rpm -q samba

2.如有 就卸载  rpm -e samba

看是否还有未删除掉的samba相关的包

rpm -q sam*

3.把自己的安装文件 挂载到Linux下

d.把samba开头的文件拷贝到/home下 准备安装

cp /mnt/cdrom/Packages/samba* /home

service smb stop

service smb restart

虚拟机网络适配器的三种情况分别是☞:

具体讲解请看:https://www.jianshu.com/p/bb02b16d99ec

安装虚拟机出现以下提示:

mount:block device /dev/sr0 is write - protected , mounting read-only

说明系统光驱加载成功,因为光驱是只读的,所以提示write-protected,mounting read-only,sr0是光驱设备名,

通过以下命令:

ll /dev/cdcom

可以看到

lrwxrwxrwx. 1 root root 3 Dec 25  2013 /dev/cdrom -> sr0

即/dev/cdcom是sr0的软链接

/dev/sr0 与 /dev/cdrom 的 关系:

/dev/sr0是光驱的设备名,/dev/cdrom代表光驱

cdrom是sr0的软链接.你ll /dev/cdrom和ll /dev/sr0看看显示

用df命令查看磁盘驱动器当前的可用空间,用free显示当前可用内存

”添加的Samba用户首先必须是Linux用户”

smbpasswd命令的常用方法

smbpasswd -a 增加用户(要增加的用户必须以是系统用户)

smbpasswd -d 冻结用户,就是这个用户不能在登录了

smbpasswd -e 恢复用户,解冻用户,让冻结的用户可以在使用

smbpasswd -n 把用户的密码设置成空.

             要在global中写入 null passwords -true

smbpasswd -x  删除用户

查看linux用户:cat /etc/passwd

查看samba用户:cat /etc/samba/smbpasswd

实现虚拟机和主机共享文件:

1.首先需要虚拟机能够ping通主机ip

虚拟机设置里面 需要将网络适配器的选择到自定义VMnet8

需要将虚拟机的网络配置文件进行修改 将配置文件的IPADDR NETWORK GATEWAY 的网段在和主机的VMnet8的网段保持一致

主机VMnet8的ip怎么知道 ?cmd 中 ipconfig /all这个命令

需要将虚拟机的网络配置文件进行修改:

vi /etc/sysconfig/network-scripts/ifcfg-ens33

同时,需要将虚拟网络编辑器进行修改

在DHCP设置中

在NAT设置中

所以网络配置文件中的IPADDR的地址最后一段的区间在128-254之间

网络配置文件修改好后 重启:service network restart

然后,需要将虚拟机的设置中的选项里面选择共享文件开启状态

任务调度命令:

crontab    /etc/crontab

1.设置任务:crontab -e

2.每隔一定时间去执行

date显示当前系统时间 date > /home/mydatel 

每天凌晨两点执行:

先设置任务:crontab -e  在里面加入:

0 2 * * * date >> /home/mydate2

每分钟执行:

* * * * * date >> /home/mydate3

怎样去调度多个任务

1.在crontab -e 中直接写

2.把所有任务写入到一个可执行文件(shell编程)(推荐)

shell文件 是以.sh结尾

如何终止任务

crontab -r 终止任务调度

crontab -l 任务调度列表

进程:进程就是正在执行的程序

线程:1.轻量级的程序

    2.进程有独立的地址空间 线程没有

    3.线程不能独立存在 它是由进程创建的

    4.相对来讲,线程所占的cpu和内存小于进程所占的cpu和内存

在linux中 每一个执行的程序都成为一个进程 每一个进程都会分配一个id号

每一个进程都会对应一个父进程 而这个父进程可以复制多个子进程

每一个进程都可能以两种方式存在 前台与后台 所谓前台进程就是用户目前屏幕上可以进行操作的 后台进程就是实际在操作的

ps 命令查看系统中正在执行的进程:

ps -a 显示当前终端所有的进程信息

ps -u 以用户的格式显示进程信息

ps -x 显示后台进程运行的参数

ps -aux

终止进程 kill 进程号

bash 是当前进程 是终止不了的

强制终止 kill -9 进程号

top 查看执行进程

查看指定用户的进程 :u 输入“u”+回车 再输入用户名即可

终止指定的进程 :“k”+回车 再输入要结束的id号

指定系统状态更新时间:top -d 10 :指定系统更新进程的时间为10秒

查看系统时间:date

查看指定月份月历:cal 3 2002  查看2002年的3月份的月历

例子:将某一年的月历写入到指定文件中 cal 2021 > test

vi test  就能看见2021年的月历了

监控网络状态信息

netstat 显示网络统计信息  (目前的链接 数据包传递数据 路由表内容)

按端口号排序 查看网络统计信息:netstat -an

traceroute 追踪路由  用于显示数据包到主机间的路径

路由表:route 命令

mysql安装配置使用

查看进程 netstat -anp | more

查看环境:env | more

在root 目录下: 查看 ls -al  |  more    .bash_profile 是用户变量

可以在.bash_profile文件中添加一个路径

看表的结构:desc 表名

showUsers.java

将mysql驱动放在jdk下的jre/lib/ext下

mysql -u root -p

备份和恢复mysql数据库:

执行备份和恢复的命令位置是:mysql 下的bin目录

备份:mysqldump -u root -p密码 数据库名>data.bak 

恢复:mysql -u root -p密码 数据库名<data.bak

每天凌晨两点将数据备份到/home/spdb1.bak

1. vi my.sh

/home/mysql/bin/mysqldump -u root -p spdb1 > /home/spdb1.bak

2. chmod 744 my.sh

3. ls -l

4. crontab -e

    0 2 * * * /root/my.sh

但是考虑到备份的数据被覆盖:----》 保存的文件名称不是一样的 就能解决这个问题 ---》shell

cp -rf 文件夹名称 要复制的位置

linux 配置系统环境变量 配置用户环境变量

更改配置:使得tomcat 用户root只要一登录就启动tomcat

vi /root/.bashrc

加入最后一行:

说明刚才的设置生效了

添加一个临时生效的路径:使  my.sh 可以在任何文件位置都能执行

export PATH=$PATH:/root

取别名 alias abc='ls -l /home'  之后命令 abc 就能相应执行命令

压缩文件:

一次性压缩多个文件:

zip 压缩后文件名.zip 文件1 文件2...

将该目录下的所有文件压缩:zip -r 压缩后的文件名.zip ./workspace/

远程连接虚拟机数据库

cmd上:连接虚拟机的mysql数据库

针对mysql 启动失败 ---  Can’t connect to local MySQL server through socket

问题关键在于:/etc/my.cnf

修改完成后 !!!一定要启动一下mysqld 才能生效 systemctl start mysqld

本机访问虚拟机的数据库 !---会了

NAT模式下:具体配置时,IP设置与vmnet8同网段,网关设置成vmnet8的网关(在“虚拟网络设置”里的Net选项卡里能找到Gateway)通常是xxx.xxx.xxx.2。一般虚拟机的网关都是 xxx.xxx.xxx.2  之前你设置成192.168.128.1  就经常ping不动

NAT模式下 的“虚拟网络编辑器”---》NAT设置---》

然后修改 vi /etc/sysconfig/network-scripts/ifcfg-ens33

保存退出 然后 service network restart

特点 : 免费的 开源的 支持多线程多用户 安全性好 对内存和文件管理优越

缺点:操作相对困难

linux 最小只需要4M -->嵌入式开发

1973 --->unix (中国移动的后台操作系统)

1991-1994---》linux  linux is not unix


约瑟夫问题(丢手帕问题)

网络设置文件位置

/etc/sysconfig/network-scripts/ifcfg-ens33

vi /etc/sysconfig/network-scripts/ifcfg-ens33

ens33是设备号 可以自行更改

onboot = yes 当机器启动时网卡是否生效

BOOTPROTO = static 是网卡指定分配ip

BOOTPROTO = dhcp  在网卡启动的时候 有操作系统自动分配一个ip地址  好处是:假设在同一个局域网的情况下,自动会看哪些ip地址没有使用 会自动分配一个空闲的

如何更改文件ifcfg-ens33中 BOOTPROTO的属性值?red hat里面

  输入命令:setup

退出后 需要输入命令:/etc/rc.d/init.d/network restart  使修改的生效

注意:当你更改了ifconfig-ens33文件的ip地址后,保存退出(这是永久性的修改),输入命令:ifconfig  显示的ip地址还是没有改变  这是因为只要是涉及永久性修改一定要运行一下网卡 需要输入命令:/etc/rc.d/init.d/network restart

网络站点设置:

/etc/httpd/conf/http.conf

centos 7

查看防火墙服务状态

systemctl status firewalld

查看firewall状态

firewall-cmd --state

重启防火墙

firecall-cmd --reload

关闭防火墙

systemctl disable firewalld

systemctl stop firewalld

查找某个文件的路径

find / -name "Hello.java"

使用locate搜索linux系统中的文件,它比find命令快。因为它查询的是数据库(/var/lib/locatedb),数据库包含本地所有的文件信息。使用locate命令在根目录下搜索interfaces文件的命令为”locate interfaces“

使用”whereis“命令可以搜索linux系统中的所有可执行文件即二进制文件。使用whereis命令搜索grep二进制文件的命令为”whereis grep“。

使用which命令查看系统命令是否存在,并返回系统命令所在的位置。使用which命令查看grep命令是否存在以及存在的目录的命令为”which grep“。

删除文件 rm

站点位置

/var/www/

apache 配置文件

/etc/httpd/conf/httpd.conf

查看本机局域网ip地址

cmd命令行: ipconfig /all    --->以太网的 IPv4地址

查看本地局域网中的所有与本机通信的计算机IP地址

cmd命令行:arp -a

c 程序例子:

#include <stdio.h>

int main(){

printf("hello!");

return 0;

}

c程序如何在linux虚拟机上编译:gcc Hello.cpp

所在的目录结构上会出现 a.out

c程序如何在虚拟机上运行  格式 : ./a.out

注意 当编译c程序时 , 默认会生成a.out 所以 你再编译第二个c程序的时候 第二个c程序就会将第一个c程序覆盖掉

这个时候需要将编译的c程序输出时 特定一个名称 防止被覆盖掉

gcc -o my Hello2.cpp (-o o在这里指的是output  输出的是名字为my 的编译文件)

gcc 是做什么用的:

GCC(GNU Compiler Collection,GNU编译器套件),是由 GNU 开发的编程语言编译器。它是以GPL许可证所发行的自由软件,也是 GNU计划的关键部分。目前可以编译的语言包括:C, C++,Objective-C, Fortran, Java, and Ada。

GCC原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器,GCC同样适用于微软的Windows。GCC是自由软件过程发展中的著名例子,由自由软件基金会以GPL协议发布。

GCC功能与作用:

1、预处理

命令gcc首先调用cpp进行预处理,在预处理过程中,对源代码文件中的文件包含(include)、预编译语句(如宏定义define等)进行分析。

2、编译

用GCC编译C/C++代码时,它会试着用最少的时间完成编译并且编译后的代码易于调试。易于调试意味着编译后的代码与源代码有同样的执行顺序,编译后的代码没有经过优化。

3、连接

当所有的目标文件都生成之后,gcc就调用ld来完成最后的关键性工作,这个阶段就是连接。在连接阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到的库函数也从各自所在的档案库中连到合适的地方。

4、汇编

汇编过程是针对汇编语言的步骤,调用as进行工作,一般来讲,.S为后缀的汇编语言源代码文件和汇编、.s为后缀的汇编语言文件经过预编译和汇编之后都生成以.o为后缀的目标文件。

gcc所遵循的部分约定规则:

1、.c为后缀的文件,C语言源代码文件。

2、.a为后缀的文件,是由目标文件构成的档案库文件。

3、.h为后缀的文件,是程序所包含的头文件。

4、.i 为后缀的文件,是C源代码文件且不应该对其执行预处理。

5、.m为后缀的文件,是Objective-C源代码文件。

6、.o为后缀的文件,是编译后的目标文件。

7、.s为后缀的文件,是汇编语言源代码文件。

目录结构:

命令dir 显示当前目录下的文件结构

显示当前在哪个目录下 : pwd

linux 用户管理

添加用户必须是root权限下的用户才能新建用户

添加用户:useradd 用户名

设置密码:passwd 用户名

删除用户:userdel 用户名

    userdel -r 用户名 (删除用户以及用户主目录)

退出:logout

命令: init [0123456]

运行级别:

0:关机

1:单用户

2:多用户状态没有网络服务

3:多用户状态有网络服务

4:系统未使用保留给用户

5:图形界面

6:系统重启

常用的运行级别是3和5 要修改默认的运行级别可改文件/etc/inittab

grep -n "hello" Hello.cpp  -n 返回指定数据所在文件位置的行号

manual 相当于手册 ---》 man 命令相当于doc下的help    man grep

重定向命令

将结果保存到文件里:

> 文件名称

>> 文件名称 将结果追加到指定文件的末尾

例子:grep -n "hello" Hello.cpp > kkk.bak    将> 前面的结果保存到kkk.bak里面

第一节习题:

c语言常识:

system是C函数库stdlib.h、process.h中的一个函数。具体解释如下:

int system(char *command):将MSDOS命令command传递给DOS执行。

而pause是DOS下的一个命令。功能是:暂停批处理的执行,显示一个中文信息:“请按任意键继续. . .”,或者英文信息:“Press any key to continue . . .”

简单的说:就是暂停程序的执行,等待任意健继续执行。

#include <stdio.h>

#include <stdlib.h>

头文件是扩展名为.h的文件 包含了C函数声明和宏定义 被多个源文件中引用共享

有两种类型的头文件:程序员编写的头文件和编辑器自带的头文件

这两个头文件分别代表什么:

是标准输入输出头文件。平时写C语言时,用到的printf() 和scanf()都是系统定义好的,而这些函数的定义就包含在stdio.h这个文件中。它是标准的输入输出库,包含了c语言的输入输出函数原型,要进行io操作必须包含此头文件。

standard library 标准库头文件 stdlib.h里面定义了C C++语言的五种变量类型 一些宏 和 通用工具函数。类型例如size_twchar_t、div_t、ldiv_t和lldiv_t; 宏例如EXIT_FAILURE、EXIT_SUCCESSRAND_MAX和MB_CUR_MAX等等; 常用的函数如malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等等。

文件权限 用户组

添加组:groupadd 组名

查看linux中所有的组信息:cat /etc/group   

编辑linux中所有的组信息:vi /etc/group

vi /etc/group | more

创建用户并同时指定将该用户分配到哪个组

useradd -g 组名 用户名

查看linux中所有的用户信息

vi /etc/passwd    cat /etc/passwd

例子:

camellia 代表用户

x 代表隐藏的密码

1000 代表用户id

1000 代表组id

两个:之间的空白代表 没有注释

/home/camellia 代表该用户的主目录

/bin/bash 代表该用户所使用的shell解析器

linux命令 (cp mkdir)

          |

  |

  \/

shell

  |

  |

  \/

linux 内核

-rw-r--r--    划分 -      rw-        r--        r--

-:代表文件类型

rw-:代表文件的所有者对该文件的权限

r--:代表文件所在组对该文件的权限

r--:代表其他组的用户对该文件的权限

权限分为三种:r  可读 用4表示

    w 可写 用2表示

    x  可执行 用1表示

说明akai文件夹的权限只有akai自己这个用户有可读可写可执行的权限 所在组的成员和其他组成员没有任何权限

现在修改akai文件夹的权限 : chmod 777 akai

但是会报错:因为目前登录的用户是ayong 所以没有权限改变akai的文件权限

此时应该退出ayong用户 登录akai用户

在 home文件夹下 修改akai文件夹的权限  chmod 777 akai

如何修改文件的访问权限问题?

        目前登录ayong 这个用户  用 ls -l 查看到akai用户下的文件情况 mytest1.java 的权限是 -rw-r--r--

所以用户ayong 无法编辑mytest1.java 这个文件 所以需要退出ayong这个用户 然后登录akai这个用户 更改这个mytest1.java的权限 : chmod 660 mytest1.java

添加用户时可以指定将该用户添加到哪个组中 同样用root的管理权限可以改变某个用户所在的组:

usermod -g 组名 用户名

改变该用户登录的初始目录:

usermod -d 目录名 用户名

改变文件所有者:

chown 用户名 文件名

查看文件的所有者

ls -ahl

改变文件所在组:

chgrp 组名 文件名

练习中遇到的问题 为组添加用户 时  用户名必须是一个字符串 不能是空格 比如 Tang Monk就不可以

发现一个问题 当沙僧转变成monster(妖怪组)的时候 kong文件夹的权限是770 771 都是不行的 Kong文件夹权限为777的时候才能打开 kong文件夹  但是 kong和Sha的属组都是monster啊 这是什么原因呢?

在linux下开发java程序 需要安装jdk

1.将mypackage.iso 挂载到linux操作系统上

2.。。。

查找以sh为结尾的文件  : ls -l /bin/*sh

查看目前使用的是哪种shell : env (该命令可以显示当前操作系统的环境变量)

shell分类:csh /  ksh / sh

改变shell

chsh -s /bin/csh

当命令忘记时  你可能只记住几个字母

比如你忘记mkdir  你只记住m开头的  此时需要打出m 快速敲击两次tab键 就能出来所有m开头的命令

希望知道曾经使用的命令 : history命令

显示最近执行的十个命令:history 10

执行编号为861的命令 : !861

tcp/ip的由来:

计算机和计算机之间的交流是通过 通讯协议

最重要的不可或缺的通讯协议就是 tcp/ip协议

tcp/ip协议不是一个独立协议 而是一组协议 它包括 tcp(传输协议) ip(ip协议) udp(用户数据包协议) arp(地址解析协议) rarp(反地址解析协议)等。因为tcp 和 ip 协议最重要 也是 最早出现的 所以叫做tcp/ip协议。

tcp/ip 电子书籍:三本书籍 网络安全相关(黑客)

斯蒂文斯:

以下的四层都是每一个计算机都有的:

应用层

传输层

ip层

链路层(靠近网卡)

linux网络环境配置:

我自己虚拟主机的命令是:ifconfig ens33 192.168.88.22

两个网络能够拼通 两个网络一定需要在同一个子网里面

linux中网卡分配的ip是:192.168.1.105

让window能够拼通linux的ip地址:

在cmd里面 ipconfig

会发现:VMnet1 和 VMnet8这两个网卡的ip地址是:192.168.169.1  192.168.128.1

这两个ip地址和linux 网卡指定的ip地址 不在同一个子网中 所以window与linux不能互通

现在我想将VMnet8这个网卡和linux达到互通的目的:

需要进行虚拟机设置 :将网络适配器 (以太网)设置成自定义模式 选择VMnet8网卡

需要将linux网卡指定的ip地址更改 使其ip地址和windows的 VMnet8这个网卡的ip同处于一个子网中。

在虚拟机上输入命令:vi /etc/sysconfig/network-scripts/ifcfg-ens33 修改IPADDR 为192.168.128.(2-255) 保存退出 此时windows和linux的ip同属于一个子网中。

此时:

实现了windows和linux的互通

如何查询linux中安装了哪些rpm软件

rpm -qa (quiry all)

rpm -q mysql 查询是否安装了mysql包

samba就是能够使liux和windows实现资源互享的服务器

在linux安装samba

1.查看是否装了samba rpm -q samba

2.如有 就卸载  rpm -e samba

看是否还有未删除掉的samba相关的包

rpm -q sam*

3.把自己的安装文件 挂载到Linux下

d.把samba开头的文件拷贝到/home下 准备安装

cp /mnt/cdrom/Packages/samba* /home

service smb stop

service smb restart

虚拟机网络适配器的三种情况分别是☞:

具体讲解请看:https://www.jianshu.com/p/bb02b16d99ec

安装虚拟机出现以下提示:

mount:block device /dev/sr0 is write - protected , mounting read-only

说明系统光驱加载成功,因为光驱是只读的,所以提示write-protected,mounting read-only,sr0是光驱设备名,

通过以下命令:

ll /dev/cdcom

可以看到

lrwxrwxrwx. 1 root root 3 Dec 25  2013 /dev/cdrom -> sr0

即/dev/cdcom是sr0的软链接

/dev/sr0 与 /dev/cdrom 的 关系:

/dev/sr0是光驱的设备名,/dev/cdrom代表光驱

cdrom是sr0的软链接.你ll /dev/cdrom和ll /dev/sr0看看显示

用df命令查看磁盘驱动器当前的可用空间,用free显示当前可用内存

”添加的Samba用户首先必须是Linux用户”

smbpasswd命令的常用方法

smbpasswd -a 增加用户(要增加的用户必须以是系统用户)

smbpasswd -d 冻结用户,就是这个用户不能在登录了

smbpasswd -e 恢复用户,解冻用户,让冻结的用户可以在使用

smbpasswd -n 把用户的密码设置成空.

             要在global中写入 null passwords -true

smbpasswd -x  删除用户

查看linux用户:cat /etc/passwd

查看samba用户:cat /etc/samba/smbpasswd

实现虚拟机和主机共享文件:

1.首先需要虚拟机能够ping通主机ip

虚拟机设置里面 需要将网络适配器的选择到自定义VMnet8

需要将虚拟机的网络配置文件进行修改 将配置文件的IPADDR NETWORK GATEWAY 的网段在和主机的VMnet8的网段保持一致

主机VMnet8的ip怎么知道 ?cmd 中 ipconfig /all这个命令

需要将虚拟机的网络配置文件进行修改:

vi /etc/sysconfig/network-scripts/ifcfg-ens33

同时,需要将虚拟网络编辑器进行修改

在DHCP设置中

在NAT设置中

所以网络配置文件中的IPADDR的地址最后一段的区间在128-254之间

网络配置文件修改好后 重启:service network restart

然后,需要将虚拟机的设置中的选项里面选择共享文件开启状态

任务调度命令:

crontab    /etc/crontab

1.设置任务:crontab -e

2.每隔一定时间去执行

date显示当前系统时间 date > /home/mydatel 

每天凌晨两点执行:

先设置任务:crontab -e  在里面加入:

0 2 * * * date >> /home/mydate2

每分钟执行:

* * * * * date >> /home/mydate3

怎样去调度多个任务

1.在crontab -e 中直接写

2.把所有任务写入到一个可执行文件(shell编程)(推荐)

shell文件 是以.sh结尾

如何终止任务

crontab -r 终止任务调度

crontab -l 任务调度列表

进程:进程就是正在执行的程序

线程:1.轻量级的程序

    2.进程有独立的地址空间 线程没有

    3.线程不能独立存在 它是由进程创建的

    4.相对来讲,线程所占的cpu和内存小于进程所占的cpu和内存

在linux中 每一个执行的程序都成为一个进程 每一个进程都会分配一个id号

每一个进程都会对应一个父进程 而这个父进程可以复制多个子进程

每一个进程都可能以两种方式存在 前台与后台 所谓前台进程就是用户目前屏幕上可以进行操作的 后台进程就是实际在操作的

ps 命令查看系统中正在执行的进程:

ps -a 显示当前终端所有的进程信息

ps -u 以用户的格式显示进程信息

ps -x 显示后台进程运行的参数

ps -aux

终止进程 kill 进程号

bash 是当前进程 是终止不了的

强制终止 kill -9 进程号

top 查看执行进程

查看指定用户的进程 :u 输入“u”+回车 再输入用户名即可

终止指定的进程 :“k”+回车 再输入要结束的id号

指定系统状态更新时间:top -d 10 :指定系统更新进程的时间为10秒

查看系统时间:date

查看指定月份月历:cal 3 2002  查看2002年的3月份的月历

例子:将某一年的月历写入到指定文件中 cal 2021 > test

vi test  就能看见2021年的月历了

监控网络状态信息

netstat 显示网络统计信息  (目前的链接 数据包传递数据 路由表内容)

按端口号排序 查看网络统计信息:netstat -an

traceroute 追踪路由  用于显示数据包到主机间的路径

路由表:route 命令

mysql安装配置使用

查看进程 netstat -anp | more

查看环境:env | more

在root 目录下: 查看 ls -al  |  more    .bash_profile 是用户变量

可以在.bash_profile文件中添加一个路径

看表的结构:desc 表名

showUsers.java

将mysql驱动放在jdk下的jre/lib/ext下

mysql -u root -p

备份和恢复mysql数据库:

执行备份和恢复的命令位置是:mysql 下的bin目录

备份:mysqldump -u root -p密码 数据库名>data.bak 

恢复:mysql -u root -p密码 数据库名<data.bak

每天凌晨两点将数据备份到/home/spdb1.bak

1. vi my.sh

/home/mysql/bin/mysqldump -u root -p spdb1 > /home/spdb1.bak

2. chmod 744 my.sh

3. ls -l

4. crontab -e

    0 2 * * * /root/my.sh

但是考虑到备份的数据被覆盖:----》 保存的文件名称不是一样的 就能解决这个问题 ---》shell

cp -rf 文件夹名称 要复制的位置

linux 配置系统环境变量 配置用户环境变量

更改配置:使得tomcat 用户root只要一登录就启动tomcat

vi /root/.bashrc

加入最后一行:

说明刚才的设置生效了

添加一个临时生效的路径:使  my.sh 可以在任何文件位置都能执行

export PATH=$PATH:/root

取别名 alias abc='ls -l /home'  之后命令 abc 就能相应执行命令

压缩文件:

一次性压缩多个文件:

zip 压缩后文件名.zip 文件1 文件2...

将该目录下的所有文件压缩:zip -r 压缩后的文件名.zip ./workspace/

远程连接虚拟机数据库

cmd上:连接虚拟机的mysql数据库

针对mysql 启动失败 ---  Can’t connect to local MySQL server through socket

问题关键在于:/etc/my.cnf

修改完成后 !!!一定要启动一下mysqld 才能生效 systemctl start mysqld

本机访问虚拟机的数据库 !---会了

NAT模式下:具体配置时,IP设置与vmnet8同网段,网关设置成vmnet8的网关(在“虚拟网络设置”里的Net选项卡里能找到Gateway)通常是xxx.xxx.xxx.2。一般虚拟机的网关都是 xxx.xxx.xxx.2  之前你设置成192.168.128.1  就经常ping不动

NAT模式下 的“虚拟网络编辑器”---》NAT设置---》

然后修改 vi /etc/sysconfig/network-scripts/ifcfg-ens33

保存退出 然后 service network restartlinux从入门到精通

特点 : 免费的 开源的 支持多线程多用户 安全性好 对内存和文件管理优越

缺点:操作相对困难

linux 最小只需要4M -->嵌入式开发

1973 --->unix (中国移动的后台操作系统)

1991-1994---》linux  linux is not unix

root  密码:Ly959126

约瑟夫问题(丢手帕问题)

网络设置文件位置

/etc/sysconfig/network-scripts/ifcfg-ens33

vi /etc/sysconfig/network-scripts/ifcfg-ens33

ens33是设备号 可以自行更改

onboot = yes 当机器启动时网卡是否生效

BOOTPROTO = static 是网卡指定分配ip

BOOTPROTO = dhcp  在网卡启动的时候 有操作系统自动分配一个ip地址  好处是:假设在同一个局域网的情况下,自动会看哪些ip地址没有使用 会自动分配一个空闲的

如何更改文件ifcfg-ens33中 BOOTPROTO的属性值?red hat里面

  输入命令:setup

退出后 需要输入命令:/etc/rc.d/init.d/network restart  使修改的生效

注意:当你更改了ifconfig-ens33文件的ip地址后,保存退出(这是永久性的修改),输入命令:ifconfig  显示的ip地址还是没有改变  这是因为只要是涉及永久性修改一定要运行一下网卡 需要输入命令:/etc/rc.d/init.d/network restart

网络站点设置:

/etc/httpd/conf/http.conf

centos 7

查看防火墙服务状态

systemctl status firewalld

查看firewall状态

firewall-cmd --state

重启防火墙

firecall-cmd --reload

关闭防火墙

systemctl disable firewalld

systemctl stop firewalld

查找某个文件的路径

find / -name "Hello.java"

使用locate搜索linux系统中的文件,它比find命令快。因为它查询的是数据库(/var/lib/locatedb),数据库包含本地所有的文件信息。使用locate命令在根目录下搜索interfaces文件的命令为”locate interfaces“

使用”whereis“命令可以搜索linux系统中的所有可执行文件即二进制文件。使用whereis命令搜索grep二进制文件的命令为”whereis grep“。

使用which命令查看系统命令是否存在,并返回系统命令所在的位置。使用which命令查看grep命令是否存在以及存在的目录的命令为”which grep“。

删除文件 rm

站点位置

/var/www/

apache 配置文件

/etc/httpd/conf/httpd.conf

查看本机局域网ip地址

cmd命令行: ipconfig /all    --->以太网的 IPv4地址

查看本地局域网中的所有与本机通信的计算机IP地址

cmd命令行:arp -a

c 程序例子:

#include <stdio.h>

int main(){

printf("hello!");

return 0;

}

c程序如何在linux虚拟机上编译:gcc Hello.cpp

所在的目录结构上会出现 a.out

c程序如何在虚拟机上运行  格式 : ./a.out

注意 当编译c程序时 , 默认会生成a.out 所以 你再编译第二个c程序的时候 第二个c程序就会将第一个c程序覆盖掉

这个时候需要将编译的c程序输出时 特定一个名称 防止被覆盖掉

gcc -o my Hello2.cpp (-o o在这里指的是output  输出的是名字为my 的编译文件)

gcc 是做什么用的:

GCC(GNU Compiler Collection,GNU编译器套件),是由 GNU 开发的编程语言编译器。它是以GPL许可证所发行的自由软件,也是 GNU计划的关键部分。目前可以编译的语言包括:C, C++,Objective-C, Fortran, Java, and Ada。

GCC原本作为GNU操作系统的官方编译器,现已被大多数类Unix操作系统(如Linux、BSD、Mac OS X等)采纳为标准的编译器,GCC同样适用于微软的Windows。GCC是自由软件过程发展中的著名例子,由自由软件基金会以GPL协议发布。

GCC功能与作用:

1、预处理

命令gcc首先调用cpp进行预处理,在预处理过程中,对源代码文件中的文件包含(include)、预编译语句(如宏定义define等)进行分析。

2、编译

用GCC编译C/C++代码时,它会试着用最少的时间完成编译并且编译后的代码易于调试。易于调试意味着编译后的代码与源代码有同样的执行顺序,编译后的代码没有经过优化。

3、连接

当所有的目标文件都生成之后,gcc就调用ld来完成最后的关键性工作,这个阶段就是连接。在连接阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到的库函数也从各自所在的档案库中连到合适的地方。

4、汇编

汇编过程是针对汇编语言的步骤,调用as进行工作,一般来讲,.S为后缀的汇编语言源代码文件和汇编、.s为后缀的汇编语言文件经过预编译和汇编之后都生成以.o为后缀的目标文件。

gcc所遵循的部分约定规则:

1、.c为后缀的文件,C语言源代码文件。

2、.a为后缀的文件,是由目标文件构成的档案库文件。

3、.h为后缀的文件,是程序所包含的头文件。

4、.i 为后缀的文件,是C源代码文件且不应该对其执行预处理。

5、.m为后缀的文件,是Objective-C源代码文件。

6、.o为后缀的文件,是编译后的目标文件。

7、.s为后缀的文件,是汇编语言源代码文件。

目录结构:

命令dir 显示当前目录下的文件结构

显示当前在哪个目录下 : pwd

linux 用户管理

添加用户必须是root权限下的用户才能新建用户

添加用户:useradd 用户名

设置密码:passwd 用户名

删除用户:userdel 用户名

    userdel -r 用户名 (删除用户以及用户主目录)

退出:logout

命令: init [0123456]

运行级别:

0:关机

1:单用户

2:多用户状态没有网络服务

3:多用户状态有网络服务

4:系统未使用保留给用户

5:图形界面

6:系统重启

常用的运行级别是3和5 要修改默认的运行级别可改文件/etc/inittab

grep -n "hello" Hello.cpp  -n 返回指定数据所在文件位置的行号

manual 相当于手册 ---》 man 命令相当于doc下的help    man grep

重定向命令

将结果保存到文件里:

> 文件名称

>> 文件名称 将结果追加到指定文件的末尾

例子:grep -n "hello" Hello.cpp > kkk.bak    将> 前面的结果保存到kkk.bak里面

第一节习题:

c语言常识:

system是C函数库stdlib.h、process.h中的一个函数。具体解释如下:

int system(char *command):将MSDOS命令command传递给DOS执行。

而pause是DOS下的一个命令。功能是:暂停批处理的执行,显示一个中文信息:“请按任意键继续. . .”,或者英文信息:“Press any key to continue . . .”

简单的说:就是暂停程序的执行,等待任意健继续执行。

#include <stdio.h>

#include <stdlib.h>

头文件是扩展名为.h的文件 包含了C函数声明和宏定义 被多个源文件中引用共享

有两种类型的头文件:程序员编写的头文件和编辑器自带的头文件

这两个头文件分别代表什么:

是标准输入输出头文件。平时写C语言时,用到的printf() 和scanf()都是系统定义好的,而这些函数的定义就包含在stdio.h这个文件中。它是标准的输入输出库,包含了c语言的输入输出函数原型,要进行io操作必须包含此头文件。

standard library 标准库头文件 stdlib.h里面定义了C C++语言的五种变量类型 一些宏 和 通用工具函数。类型例如size_twchar_t、div_t、ldiv_t和lldiv_t; 宏例如EXIT_FAILURE、EXIT_SUCCESSRAND_MAX和MB_CUR_MAX等等; 常用的函数如malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等等。

文件权限 用户组

添加组:groupadd 组名

查看linux中所有的组信息:cat /etc/group   

编辑linux中所有的组信息:vi /etc/group

vi /etc/group | more

创建用户并同时指定将该用户分配到哪个组

useradd -g 组名 用户名

查看linux中所有的用户信息

vi /etc/passwd    cat /etc/passwd

例子:

camellia 代表用户

x 代表隐藏的密码

1000 代表用户id

1000 代表组id

两个:之间的空白代表 没有注释

/home/camellia 代表该用户的主目录

/bin/bash 代表该用户所使用的shell解析器

linux命令 (cp mkdir)

          |

  |

  \/

shell

  |

  |

  \/

linux 内核

-rw-r--r--    划分 -      rw-        r--        r--

-:代表文件类型

rw-:代表文件的所有者对该文件的权限

r--:代表文件所在组对该文件的权限

r--:代表其他组的用户对该文件的权限

权限分为三种:r  可读 用4表示

    w 可写 用2表示

    x  可执行 用1表示

说明akai文件夹的权限只有akai自己这个用户有可读可写可执行的权限 所在组的成员和其他组成员没有任何权限

现在修改akai文件夹的权限 : chmod 777 akai

但是会报错:因为目前登录的用户是ayong 所以没有权限改变akai的文件权限

此时应该退出ayong用户 登录akai用户

在 home文件夹下 修改akai文件夹的权限  chmod 777 akai

如何修改文件的访问权限问题?

        目前登录ayong 这个用户  用 ls -l 查看到akai用户下的文件情况 mytest1.java 的权限是 -rw-r--r--

所以用户ayong 无法编辑mytest1.java 这个文件 所以需要退出ayong这个用户 然后登录akai这个用户 更改这个mytest1.java的权限 : chmod 660 mytest1.java

添加用户时可以指定将该用户添加到哪个组中 同样用root的管理权限可以改变某个用户所在的组:

usermod -g 组名 用户名

改变该用户登录的初始目录:

usermod -d 目录名 用户名

改变文件所有者:

chown 用户名 文件名

查看文件的所有者

ls -ahl

改变文件所在组:

chgrp 组名 文件名

练习中遇到的问题 为组添加用户 时  用户名必须是一个字符串 不能是空格 比如 Tang Monk就不可以

发现一个问题 当沙僧转变成monster(妖怪组)的时候 kong文件夹的权限是770 771 都是不行的 Kong文件夹权限为777的时候才能打开 kong文件夹  但是 kong和Sha的属组都是monster啊 这是什么原因呢?

在linux下开发java程序 需要安装jdk

1.将mypackage.iso 挂载到linux操作系统上

2.。。。

查找以sh为结尾的文件  : ls -l /bin/*sh

查看目前使用的是哪种shell : env (该命令可以显示当前操作系统的环境变量)

shell分类:csh /  ksh / sh

改变shell

chsh -s /bin/csh

当命令忘记时  你可能只记住几个字母

比如你忘记mkdir  你只记住m开头的  此时需要打出m 快速敲击两次tab键 就能出来所有m开头的命令

希望知道曾经使用的命令 : history命令

显示最近执行的十个命令:history 10

执行编号为861的命令 : !861

tcp/ip的由来:

计算机和计算机之间的交流是通过 通讯协议

最重要的不可或缺的通讯协议就是 tcp/ip协议

tcp/ip协议不是一个独立协议 而是一组协议 它包括 tcp(传输协议) ip(ip协议) udp(用户数据包协议) arp(地址解析协议) rarp(反地址解析协议)等。因为tcp 和 ip 协议最重要 也是 最早出现的 所以叫做tcp/ip协议。

tcp/ip 电子书籍:三本书籍 网络安全相关(黑客)

斯蒂文斯:

以下的四层都是每一个计算机都有的:

应用层

传输层

ip层

链路层(靠近网卡)

linux网络环境配置:

我自己虚拟主机的命令是:ifconfig ens33 192.168.88.22

两个网络能够拼通 两个网络一定需要在同一个子网里面

linux中网卡分配的ip是:192.168.1.105

让window能够拼通linux的ip地址:

在cmd里面 ipconfig

会发现:VMnet1 和 VMnet8这两个网卡的ip地址是:192.168.169.1  192.168.128.1

这两个ip地址和linux 网卡指定的ip地址 不在同一个子网中 所以window与linux不能互通

现在我想将VMnet8这个网卡和linux达到互通的目的:

需要进行虚拟机设置 :将网络适配器 (以太网)设置成自定义模式 选择VMnet8网卡

需要将linux网卡指定的ip地址更改 使其ip地址和windows的 VMnet8这个网卡的ip同处于一个子网中。

在虚拟机上输入命令:vi /etc/sysconfig/network-scripts/ifcfg-ens33 修改IPADDR 为192.168.128.(2-255) 保存退出 此时windows和linux的ip同属于一个子网中。

此时:

实现了windows和linux的互通

如何查询linux中安装了哪些rpm软件

rpm -qa (quiry all)

rpm -q mysql 查询是否安装了mysql包

samba就是能够使liux和windows实现资源互享的服务器

在linux安装samba

1.查看是否装了samba rpm -q samba

2.如有 就卸载  rpm -e samba

看是否还有未删除掉的samba相关的包

rpm -q sam*

3.把自己的安装文件 挂载到Linux下

d.把samba开头的文件拷贝到/home下 准备安装

cp /mnt/cdrom/Packages/samba* /home

service smb stop

service smb restart

虚拟机网络适配器的三种情况分别是☞:

具体讲解请看:https://www.jianshu.com/p/bb02b16d99ec

安装虚拟机出现以下提示:

mount:block device /dev/sr0 is write - protected , mounting read-only

说明系统光驱加载成功,因为光驱是只读的,所以提示write-protected,mounting read-only,sr0是光驱设备名,

通过以下命令:

ll /dev/cdcom

可以看到

lrwxrwxrwx. 1 root root 3 Dec 25  2013 /dev/cdrom -> sr0

即/dev/cdcom是sr0的软链接

/dev/sr0 与 /dev/cdrom 的 关系:

/dev/sr0是光驱的设备名,/dev/cdrom代表光驱

cdrom是sr0的软链接.你ll /dev/cdrom和ll /dev/sr0看看显示

用df命令查看磁盘驱动器当前的可用空间,用free显示当前可用内存

”添加的Samba用户首先必须是Linux用户”

smbpasswd命令的常用方法

smbpasswd -a 增加用户(要增加的用户必须以是系统用户)

smbpasswd -d 冻结用户,就是这个用户不能在登录了

smbpasswd -e 恢复用户,解冻用户,让冻结的用户可以在使用

smbpasswd -n 把用户的密码设置成空.

             要在global中写入 null passwords -true

smbpasswd -x  删除用户

查看linux用户:cat /etc/passwd

查看samba用户:cat /etc/samba/smbpasswd

实现虚拟机和主机共享文件:

1.首先需要虚拟机能够ping通主机ip

虚拟机设置里面 需要将网络适配器的选择到自定义VMnet8

需要将虚拟机的网络配置文件进行修改 将配置文件的IPADDR NETWORK GATEWAY 的网段在和主机的VMnet8的网段保持一致

主机VMnet8的ip怎么知道 ?cmd 中 ipconfig /all这个命令

需要将虚拟机的网络配置文件进行修改:

vi /etc/sysconfig/network-scripts/ifcfg-ens33

同时,需要将虚拟网络编辑器进行修改

在DHCP设置中

在NAT设置中

所以网络配置文件中的IPADDR的地址最后一段的区间在128-254之间

网络配置文件修改好后 重启:service network restart

然后,需要将虚拟机的设置中的选项里面选择共享文件开启状态

任务调度命令:

crontab    /etc/crontab

1.设置任务:crontab -e

2.每隔一定时间去执行

date显示当前系统时间 date > /home/mydatel 

每天凌晨两点执行:

先设置任务:crontab -e  在里面加入:

0 2 * * * date >> /home/mydate2

每分钟执行:

* * * * * date >> /home/mydate3

怎样去调度多个任务

1.在crontab -e 中直接写

2.把所有任务写入到一个可执行文件(shell编程)(推荐)

shell文件 是以.sh结尾

如何终止任务

crontab -r 终止任务调度

crontab -l 任务调度列表

进程:进程就是正在执行的程序

线程:1.轻量级的程序

    2.进程有独立的地址空间 线程没有

    3.线程不能独立存在 它是由进程创建的

    4.相对来讲,线程所占的cpu和内存小于进程所占的cpu和内存

在linux中 每一个执行的程序都成为一个进程 每一个进程都会分配一个id号

每一个进程都会对应一个父进程 而这个父进程可以复制多个子进程

每一个进程都可能以两种方式存在 前台与后台 所谓前台进程就是用户目前屏幕上可以进行操作的 后台进程就是实际在操作的

ps 命令查看系统中正在执行的进程:

ps -a 显示当前终端所有的进程信息

ps -u 以用户的格式显示进程信息

ps -x 显示后台进程运行的参数

ps -aux

终止进程 kill 进程号

bash 是当前进程 是终止不了的

强制终止 kill -9 进程号

top 查看执行进程

查看指定用户的进程 :u 输入“u”+回车 再输入用户名即可

终止指定的进程 :“k”+回车 再输入要结束的id号

指定系统状态更新时间:top -d 10 :指定系统更新进程的时间为10秒

查看系统时间:date

查看指定月份月历:cal 3 2002  查看2002年的3月份的月历

例子:将某一年的月历写入到指定文件中 cal 2021 > test

vi test  就能看见2021年的月历了

监控网络状态信息

netstat 显示网络统计信息  (目前的链接 数据包传递数据 路由表内容)

按端口号排序 查看网络统计信息:netstat -an

traceroute 追踪路由  用于显示数据包到主机间的路径

路由表:route 命令

mysql安装配置使用

查看进程 netstat -anp | more

查看环境:env | more

在root 目录下: 查看 ls -al  |  more    .bash_profile 是用户变量

可以在.bash_profile文件中添加一个路径

看表的结构:desc 表名

showUsers.java

将mysql驱动放在jdk下的jre/lib/ext下

mysql -u root -p

备份和恢复mysql数据库:

执行备份和恢复的命令位置是:mysql 下的bin目录

备份:mysqldump -u root -p密码 数据库名>data.bak 

恢复:mysql -u root -p密码 数据库名<data.bak

每天凌晨两点将数据备份到/home/spdb1.bak

1. vi my.sh

/home/mysql/bin/mysqldump -u root -p spdb1 > /home/spdb1.bak

2. chmod 744 my.sh

3. ls -l

4. crontab -e

    0 2 * * * /root/my.sh

但是考虑到备份的数据被覆盖:----》 保存的文件名称不是一样的 就能解决这个问题 ---》shell

cp -rf 文件夹名称 要复制的位置

linux 配置系统环境变量 配置用户环境变量

更改配置:使得tomcat 用户root只要一登录就启动tomcat

vi /root/.bashrc

加入最后一行:

说明刚才的设置生效了

添加一个临时生效的路径:使  my.sh 可以在任何文件位置都能执行

export PATH=$PATH:/root

取别名 alias abc='ls -l /home'  之后命令 abc 就能相应执行命令

压缩文件:

一次性压缩多个文件:

zip 压缩后文件名.zip 文件1 文件2...

将该目录下的所有文件压缩:zip -r 压缩后的文件名.zip ./workspace/

远程连接虚拟机数据库

cmd上:连接虚拟机的mysql数据库

针对mysql 启动失败 ---  Can’t connect to local MySQL server through socket

问题关键在于:/etc/my.cnf

修改完成后 !!!一定要启动一下mysqld 才能生效 systemctl start mysqld

本机访问虚拟机的数据库 !---会了

NAT模式下:具体配置时,IP设置与vmnet8同网段,网关设置成vmnet8的网关(在“虚拟网络设置”里的Net选项卡里能找到Gateway)通常是xxx.xxx.xxx.2。一般虚拟机的网关都是 xxx.xxx.xxx.2  之前你设置成192.168.128.1  就经常ping不动

NAT模式下 的“虚拟网络编辑器”---》NAT设置---》

然后修改 vi /etc/sysconfig/network-scripts/ifcfg-ens33

保存退出 然后 service network restart

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • 1、第八章 Samba服务器2、第八章 NFS服务器3、第十章 Linux下DNS服务器配站点,域名解析概念命令:...
    哈熝少主阅读 3,702评论 0 10
  • 进入带空格的文件或者文件夹 Linux文件权限详解 文件和目录权限概述 在linux中的每一个文件或目录都包含有访...
    annkee阅读 2,642评论 0 4
  • 观其大纲 第1部分Linux的基础知识第1章Linux概述第2章Linux系统的安装KickStart开始自动安装...
    周少言阅读 1,457评论 1 10
  • 第一章 1.Linux是一套免费使用和自由传播的类UNIX操作系统,它可以基于Intel x86系列处理器以及Cy...
    yansicing阅读 5,318评论 0 9
  • 基础命令 为了在 sudo 中设置权限提升,您需要编辑 sudoers 文件。 你不应该直接编辑文件,而是使用:s...
    米开朗基乐阅读 1,885评论 0 5