我的有道云笔记链接: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_t、wchar_t、div_t、ldiv_t和lldiv_t; 宏例如EXIT_FAILURE、EXIT_SUCCESS、RAND_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_t、wchar_t、div_t、ldiv_t和lldiv_t; 宏例如EXIT_FAILURE、EXIT_SUCCESS、RAND_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_t、wchar_t、div_t、ldiv_t和lldiv_t; 宏例如EXIT_FAILURE、EXIT_SUCCESS、RAND_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