shell 学习小记:注意:多看系统脚本  多模仿   su切换用户时需要输入目标用户密码,root(superuser)切换到任何用户都不需要输入密码,- 参数必须要是最后一个(su huhu -)
sudo需要输入当前用户密码,拥有sudo特权的用户可以执行 "sudo su -"命令,使用自己的密码切换到root用户 ,
所以应该在/etc/sudoers 文件中禁止 sudo 执行su命令linux文件与颜色: /etc/DIR_COLORS   (命令dircolors,  man dir_colors)
suid: 需要提供给普通用户,但又需要root权限才能正确执行的命令基本都有suid权限(e.g passwd 、mount、su)
SBIT权限(t):仅对目录有效,若自己在该目录下创建了文件,则只有root与自己可以删除(/tmp目录权限) -------
linux中不用的内存会被缓存起来,所以总内存是“free” +“buffer” 之和
---------~:代表家目录
-:代表上一个工作目录搜索命令(5个):
1、whereis : 不是在磁盘中漫无目的找,而是在数据库(/var/lib/mlocate)中找,且只可以查找可执行文件、联机帮助及源码文件该数据库是系统自动创建的包含了本地的所有文件信息,并且每天执行updatedb命令进行更新,因此导致有时候查询不准,若想准确,可以在查找之前执行下updatedb,但不建议这样干。
2、locate:也是用mlocate数据库,但其算法复杂,匹配路径或者文件名中出现的目标:locate ls ——匹配非常之多locate -b "\ls" 注:locate与whereis机制相同,为了速度就损失了精确度
3、which:他只在$PATH环境变量定义的路径下查找可执行文件的位置;一般用于确认系统中是否安装了某款软件,如gcc
4、type:判断一条命令是否是系统内置的,若是非内置的,若使用了-p选项,则相当于which命令
5、find他呢无所不及,就是效率差,他是从磁盘中查找,可以设置非常精确的查询条件,他可以规范对找到的文件做啥操作find / -mtime -1 -exec ls -l {} \;   {}是占位符,他会不断被替换成被找到的文件;:是exec的结束标志,但;在bash中有特殊含义,所以需要转义打包压缩tar:
压缩比小到大: gz<bz2<xz,压缩速度正好相反
解压缩所有类型的tar包(所有类型): tar -vxf filename  这种形式“f”选项一定要在最后或者tar -vx  -f filename
创建压缩包:略显麻烦,比解压缩时候多一个选项,该选项其实就是选择的压缩算法:z —— gz;  j——bz2 ; J——xze.g.  tar -zcvf filename.tar.gz  Files  ; tar -jcvf filename.tar.bz2  Files ;tar -Jcvf filename.tar.xz  Files  ;
备份还原工具—— dump、restore
cpio:  用于备份任何东西,也可以实现对文件打包,linux的启动初始化镜像文件initrd是使用cpio制作,其生成的文件名不是利用选项提供而是通过标准输入传递的,输出也是输出到标准输出,一般为了打包成功:打包:find ....   | cpio -ocB >filename解包: cpio -idc <filenameLinux程序执行问题:windows:直接输入程序名(命令名字),系统会在%PATH%及当前目录下寻找linux :直接输入名字,系统只在$PATH下查找,不会再当前目录下查找,所以即使在当前目录也需要带路径:  ./cmd-name linux管道与IO重定向linux多任务协调值管道(匿名管道),也称为FIFO,命名管道需要用mkfifo创建一个文件类型为p的文件匿名管道其实就是一种隐式的重定向,显示的即常见的: >   >> <  << 等: < 表示经其右边的内容重定向到键盘输入流式处理:find /root   | cpio -ocB | gzip -9 > /tmp/boot.img   (三个命令同时运行,体现了多任务)前后台任务(jobs\fg\bg):将一个前台任务变为后天任务: ctrl+z    ;命令后加与符号(&)停止后台任务: kill -9  %任务号 :  kill后传递的是进程id,但这与任务号有冲突,所以加%linux下的任务是与操作者的终端相关联的,只要你退出了终端,所有与该终端相关的任务(jobs)都会停止,此时若想终端关闭而任务依旧需要利用nohup命令(nohup 命令  & ,任务输出到了nohup.out)计划任务(at\crontab ):注意命令尽量使用全路径一次性计划创建任务:  at 10:00 tomorrow  ,回车,输入需执行命令:echo "helloworld" ,ctrl + d 保存(linux中ctrl+d 表示EOF,说明输入完毕)周期性计划任务: crontab(5部分):分钟  小时  日  月  周 [用户名] 命令
计划任务并不是任何人都可以添加,他有四个黑白名单决定:
at.allow at.deny   cron.allow  cron.deny守护进程:stand alone与xinetdps aux :查看系统所有进程信息
ps ux:查看当前用户进程信息
ps -l :查看与当前终端关联的进程
源码安装:
make clean (distclean)\configure\make\make install
软件包管理工具(君子善假于物):rpm  d
安装():rpm -ivh pkg (rpm安装环境一定要与打包时的环境一致才可以,如果两者不同则需要SRPM) |  dpkg -i  deb-pkg
查询:rpm -qa ,rmp -ql XXX(查询该软件向系统写入的文件列表)dpkg -l , dpk --listfiles
卸载:rpm -e  XX  | dpkg -e XX线上升级工具: apt(advance packaging tool) 、yum(yellowdog updater modified)——python写的,所以升级时注意,否则yum可能不可用linux文件系统格式:
extN(n=2、3、4)是基于iNode的文件系统,一个iNode数据结构(存储属性及权限)代表一个文件,数据则在data block,二者都有唯一编号
iNode会记录data block的引用,从而可以找到文件任意一段数据。(索引式文件系统)
而Fat32则是data block之间的引用,加载当前块,才可以知道后续块位置(ext则可以一次知道所有位置,然后安排合理的读取顺序)linux磁盘管理
磁盘操作:du\df\dd\fsck\mount
每一块磁盘分区都是文件系统的一个具体实例(类与对象关系) ,/etc/fstab :决定分区的连接逻辑卷:可以弹性的调整文件系统的容量,即在磁盘分区与文件系统之间增加的逻辑层
linux 卷、逻辑卷(容量可以任意缩放)、物理卷、卷组、物理扩展区(每个PV都会以PE为基本单位进行划分)
物理卷加入卷组中,创建逻辑卷相当于对卷组这个大磁盘进行分区
LVM三部曲pv、vg、lv,LVM使用步骤:
1、在物理分区(PP)上创建物理卷(PV)pvcreate /dev/sda1   //将传统分区变为LVM中的物理卷
2、在创建卷组(VG)vgcreate vg /dev/sda1   //将(1)中创建的物理卷加入卷组vg来完成卷组的创建
3、从 VG 中分配空间,创建逻辑卷(LV)lvcreate -L 20G -n data vg //从卷组vg中创建大小为20G,名称为data的逻辑卷分区
4、格式化新创建的LV为某种文件系统类型mke2fs -j /dev/vg/data     //将LV格式化为ext2文件系统类型
5、挂载LVmount -t reiserfs /dev/vg/data /mnt/》》》》》》》》》》》》》》》》》》》》》》》》》》》》
shell :
注意:自由login shell才会读取系统的设置文件/etc/profile,每个用户登陆取得bash后一定会读取/etc/profile/etc/profile还会调用:/etc/inputrc :设置bash的热键/etc/profile.d/*.sh : bash操作界面、语义、公共的命令别名/etc/sysconfig/i18n
登陆shell会首先读取系统环境设置文件:/etc/profile ,之后会读取个人配置文件,
个人配置文件主要是几个隐藏文件:~/.bash_profile ,/.bash_login,~/.profile,此三个文件可能不会同时存在,
会按从左到右顺序,找到一个后其他的就忽略,如果~/.bashrc存在,则~/.bash_profile还会调用该文件。
用户目录下还有俩个个人配置文件:~/.bash_history 、~/.bash_logout文件内容查看: cat、more、less、head、tail“cut -d' ' -f1 ~/.bash_history|sort -d|uniq -c|sort -nr|head”  :统计最常用的10条命令及其使用次数==========================
1、注意shell的执行权限问题及逻辑依赖关系e.g  清除linux系统日志 /var/log/messages   ( 高版本的linux可能没有开放该文件)cd /var/log/cat /dev/null > /var/log/messagesecho "logs cleaned up"该脚本存在很多问题:1、如果不是root,该shell就执行不了,但是该shell没有提示,不友好2、语句之间缺少逻辑:万一cd /var/log 失败,后面的就不应该开干啊logfile=/var/logrootuid=0if [ $uid -ne $rootuid ];thenecho 'must be root to run this script'exit 1ficd $logfile || {echo 'cant not change to the target directory' >&2exit 1}cat /dev/null > messages && echo 'logs cleand up'注意:这里大括号使用,一般如果if判断只有有多条语句可以考虑使用大括号,相当于if else2、清空日志方法3种方式:echo "" > test.log   || echo > test.log>test.logcat /dev/null > test.log3、shell脚本执行方式(推荐指定shell解释器方式)A、bash script-name 或  sh script-name(推荐使用)  ---- 当脚本本身没有可执行权限时B、path/script-name  或者 ./script-name(当前路径下执行脚本)  -- 脚本本身必须具备可执行权限C、source script-name 或 . script-name    ---- 此种方式执行后会将子shell中定义的变量传回到父shell(在一个shell中加载另外的shell,并想使用被加载的shell中的变量,后者export 子shell变量)
4、shell中中括号[]两边是要有空格的
5、shell变量全局变量(环境变量):可在其创建的shell及该shell派生的shell中使用。(在用户家目录.bash_profile文件或者全局/etc/profile文件)环境变量在应用于用户进程之前需要利用 export 导出定义方法:export var_name=var_valuevar_name=var_value ;export var_name;declare -x var_name=var_value局部变量6、单引号、双引号、反引号单引号里面的变量不会做解析,单引号里是啥就输出啥;双引号里的变量引用会做变量解析后输出,适合字符串中有变量的情况,但akw中正好相反习惯:数字不加引号,其他默认一般加双引号将命令定义为变量: uname=`pwd`   或者   uname=$( date +%F)变量引用: $变量名 或者  ${变量名}  或者  "$变量名" 或者  "${变量名}"8、位置变量$0 : 当前脚本文件名,当执行的脚本时使用的是全路径时,则$0包含路径拆分路径与名字:dirname $0 ——路径   ; basename $0——获取名字$n : 获取传递给当前shell脚本的第n个参数  : n=1...9,如n大于9则需要用大括号: ${10}$* : 获取所有参数,将所有参数作为单个字符串$# :命令行参数个数$@ :将命令行每个参数视为独立的单个字符串
9、进程状态变量;$? : 取上一个命令执行结果——  0 :正确 ; 非零:错误$$ : 取当前shell进程号
10、read函数:read –d madfds value,读到有m的字符的时候就不在继续向后读,例如输入为 hello m,有效值为“hello”,请注意m前面的空格等会被删除。这种方式可以输入多个字符串,例如定义“.”作为结符号等等。
11、IFS:Shell 脚本中有个变量叫 IFS(Internal Field Seprator) ,内部域分隔符。完整定义是The shell uses the value stored in IFS, which is the space, tab, and newline characters by default,to delimit words for the read and set commands。Shell 的环境变量分为 set, env 两种,其中 set 变量可以通过 export 工具导入到 env 变量中。其中,set 是显示设置shell变量,仅在本 shell 中有效;env 是显示设置用户环境变量 ,仅在当前会话中有效。换句话说,set 变量里包含了 env 变量,但 set 变量不一定都是 env 变量。这两种变量不同之处在于变量的作用域不同。显然,env 变量的作用域要大些,它可以在 subshell 中使用。而 IFS 是一种 set 变量,当 shell 处理"命令替换"和"参数替换"时,shell 根据 IFS 的值,默认是 space, tab, newline 来拆解读入的变量,然后对特殊字符进行处理,最后重新组合赋值给该变量。12、介绍下Shell中的${}、##和%%使用范例:注意:正则表达式的贪婪与非贪婪匹配${#VALUE}:计算VALUE字符串的字符数量。${VALUE%.*}或${VALUE%%.*}:删除VALUE字符串中以分隔符“.”匹配的右边字符,保留左边字符。${VALUE#*.}或${VALUE##*.}:删除VALUE字符串中以分隔符“.”匹配的左边字符,保留右边字符。${VALUE/OLD/NEW}或${VALUE//OLD/NEW}:用NEW子串替换VALUE字符串中匹配的OLD子串。补充:“*”表示通配符,用于匹配字符串将被删除的字串。“.”表示字符串中分隔符,可以为任意一个或多个字符。“%”表示从右向左匹配,“#”表示从左向右匹配,“\”表示替换,都属于非贪婪匹配,即匹配符合通配符的最短结果。与“%”、“#”和“/”类似的有“%%”、“##”和“//”,都属于贪婪匹配,即匹配符合通配符的最长结果。${VALUE:OFFSET}或${VALUE:OFFSET:LENGTH}:从VALUE字符串的左边开始中截取子串。${VALUE:0-OFFSET}或${VALUE:0-OFFSET:LENGTH}:从VALUE字符串的右边开始中截取子串。可以用${ }分别替换得到不同的值:${file#*/}:删掉第一个/ 及其左边的字符串:dir1/dir2/dir3/my.file.txt${file##*/}:删掉最后一个/ 及其左边的字符串:my.file.txt${file#*.}:删掉第一个. 及其左边的字符串:file.txt${file##*.}:删掉最后一个. 及其左边的字符串:txt${file%/*}:删掉最后一个 / 及其右边的字符串:/dir1/dir2/dir3${file%%/*}:删掉第一个/ 及其右边的字符串:(空值)${file%.*}:删掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file${file%%.*}:删掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my
13、Here DocumentHere document以 << 开头,后面接上一个字符串,这个字符串还必须出现在here document的末尾cmd << delimiterHere Document Contentdelimiter(结束符要顶格写)它的作用就是将两个 delimiter 之间的内容(Here Document Content 部分) 传递给cmd 作为输入参数。14、shell基本规范a、头行写shell解释器,接着几行加时间、作者、联系方式、版本等信息,这些信息可以在~/.vimrc中模板化b、书写时成对的符号先写完(括号,引号),防止遗漏(如[]两边有空格)c、流程语句的格式一次完成(if、for、case、while等)
15、shell常用内部命令:echo、eval、exec、export、readonly、read、shift、wait、exit、点(.)
16、变量子串的常用操作:%: 从后面开始    # :从前面开始${#string}  —— 返回$string的长度${string:position} ——从position位置开始截取子串(position为偏移量)${string:position:length} ——截取指定长度的串${string#substring}  ——从string开始删除最短匹配substing${string/substring/replace}——使用$replace替换第一个匹配的$substring${string/#substring/replace}——如果string的前缀匹配substring,则用replace替换${string%substring}  ——从string结尾开始删除最短匹配substing
变量替换:${vlaue:-word}   ——变量未定义(不存在或为null),则返回默认值${value:=word}    |  ${value:?"not defined"} | ${value:+word}17、产生序列:“seq -s"," 100”   —— 以逗号为分割,从1打印到100
18、计算变量长度方法:${#string} 或  echo ${string} | wc -m   或  echo $(expr length "$string")验证时间(第一种效率最好):time for i in (seq 11111);do count=${#chars};done;  bash对变量的处理可以通过man bash来查看(看一手资料)19、变量的数值计算(())——常用,效率高、let、expr、bc——支持浮点运算、$[]e.g :   ((a=1+2**3));echo $a   或  a=$((1+2**3))  或 echo $((1+2**3))判断:  echo $((3>2))  ——》输出1bc是unix下的计算器,在命令行可以直接敲bc进到bc环境做运算,bc常用做法是拼接字符串表达式然后管道给bc;进制转换“seq -s"+" 10 | bc”  ——计算1——10的和echo "scale=2;5.23/3.21"|bc
20、shell变量的输入read [param] [var] 常用: -p :设置提示信息 ,-t 设置超时时间(秒)
21、条件测试:test <测试表达式>  或 [测试表达式]或[[测试表达式]]test -f align.sh.swp && echo 1 || echo 0test ! -f align.sh.swp && echo 1 || echo 0  (非)双中括号中间支持&& ||操作[[ -f file && -d folder ]] && echo 1 || echo 0   : 单中括号实现同样功能需要跟 -a参数[ -f file -a -d folder ] && echo 1 || echo 0  (-a、-o、!)文件测试操作符:-f  文件: 文件存在且为普通文件则真-d 文件:文件存在且为目录则真-s  文件 : 文件存在且不为空(文件大小不为零)-e :文件存在则为真-r:文件存在且可读则真-w:文件存在且可写则真-x:文件存在且可执行则真f1 -nt f2 :若文件f1比文件f2新则真f1 -ot f2 :若文件f1比f2旧则真字符串测试操作符:`=` 单等于号与双等于号功能相同`==`  : 比较字符串是否相等(对于$a这样变量比较,最好用双引号括起来)-z 字符串 :  字符串长度为零则真-n 字符串:字符串长度不为零则真整数二元比较操作: 在单中括号中(这些操作符不需转义):-ne、-eq、-gt、-lt、-ge    、-le在双中括号中可以使用:==、> 、< 、!= 、<= (如果在单中括号中使用则需转义)逻辑运算:-a、-o、 !
22、判断字符串是否是数字方法1、sed正则表达式方法2、变量子串替换加正则表达式
23、监控mysql服务1、根据mysql端口(假设默认端口3306)(思路不好,有可能取不到,导致脚本后很多容易bug)netstat -lnt|grep 3306 | awk -F '[ :]' '{print $5}'或利用wc命令统计(将端口或进程转成数字然后进行判断)netstat -lnt|grep 3306 | wc -l     2、MySql进程及端口同时存在则认为mysql服务正常ps -ef | grep mysqld | grep -v grep | wc -l        (-v grep 排除grep自己)    中间启动后,可能需要暂停几十秒(sleep 10) ,在继续判断mysql是否启动成功有时候杀进程失败,为了方便可以在while中不断杀进程(killall mysqld),killall杀死同一进程组内的所有进程3、利用mysql命令连接mysql,并做相关语句操作以确认mysql确实在运行(判断上述语句是否执行成功):mysql -uroot -p'P@ssw0rd' -S  /home/data/3306/mysql.sock  -e "select version();" >/dev/null4、利用编程语言写程序连接判断
24、case语句:范围中括号:[1-9]  ;  选择或:“|”  ——例如不区分大小写(red|RED)
25、数组定义: 利用小括号做边界,元素之间使用空格隔开: array=(1 2 3)数组长度:echo ${#array[@]}  | echo ${#array[*]}  (类似字符串长度取法:a=123  len=${#a})打印整个数组(去掉#) : echo ${array[*]}删除元素: unset 数组[下标],不带下标则删除整个数组截取:类似之前的变量截取操作(数组也是一种变量)操作
26、shell调试a、dos2unix 处理脚本(存在一个相对的unix2dos) (在windows下写的脚本到linux下后存在编码问题)(此问题可以通过vi脚本来设置脚本的ff属性)b、利用echo调试,echo需要调试内容。然后exit 退出脚本,循环往复c、使用bash命令参数:sh [-nvx] XX.sh   (-n:做语法检查而不执行;常用是-x参数) (此种方式调试作用域是整个脚本)利用set (+)-x 限制需要调试的代码的范围,在set-x 与set +x之间的代码才会被调试
27、shell开发环境配置调优.vimrc 文件: 28、linux系统信号处理a、不希望脚本执行时被打断(如 ctrl + c 终止脚本),利用 kill -l(或trap -l)查看系统信号(在signal.h 头文件中)信号在之前linux中使用数字表示,但后续新的脚本使用信号名字,使用信号名字时需要省略SIG前缀b、trap命令: 表示在接收到信号后的操作
29、日志与ReiserFS文件系统是项目,类型(ext2、3等)是方案,驱动程序是执行人fsck :确保文件系统的驱动程序要用的元数据是干净的——是文件系统驱动程序的保姆。工作原理:在linux每次启动时,还没有挂接任何文件系统的时候,都会启动fsck扫描下/etc/fstab 中列出的所有本地文件系统;系统关闭时需要做清理工作。日志:(韩局长的日记)文件系统的日志记录了他对元数据都干了些什么,fsck对日志放行。元数据出现问题后,fsck遇到有日志的文件系统就放行,接下来由文件系统驱动负责按照日志里面的记载去恢复元数据。ReiserFS :1、小文件性能 : 对于小文件而言应该采用数据库或者其他方式存储,对文件系统而言可能存储性能极地(文件太小了)Reiserfs在处理小于1k的文件的速率比ext2快8到15倍(将文件信息与索引信息存储在一块)2、ReiserFS :采用 B*树结构来组织元数据;Reiserfs不适用固定大小的数据块来分配存储空间,采用精确分配(不会浪费磁盘空间)。(基于内存介质的二分查找算法中红黑树是最稳定的,而基于磁盘介质的查找算法就是B树——多叉平衡查找树)30、进程文件系统procfs他是一个伪文件系统(启动时动态生成的),通常被挂接到/proc 目录手工释放内存(伪解决内存泄漏):a、使用free查看内存   b、执行sync命令(将所有未写的系统缓存写到磁盘)  c、echo 3 > /proc/sys/vm/drop_caches31、tmpfs类似ramdisk,他使用虚拟内存,一个简单的mount命令就可以创建tmpfs,是按需分配,动态的增减,可能hi耗尽虚拟内存。32、网络与路由ifconfig 输出信息UP BROADCAST RUNNING MULTICAST 该行表示: up - 该接口是开放的(down则表示该接口是关闭的),可以为主机发送接收数据BROADCAST : 该接口支持广播地址MULTICAST : 支持多路传送地址RUNNING : 该接口已被系统识别RX、TX : 表示该网卡从启动到目前的封包的收发情况,RX是收,TX是发虚拟网络接口:在网络接口后面加冒号及数字,可以看做该网络接口的别名。如 :eth0:1 、eth0:2 ifconfig eth0:1 192.168.19.126 netmask 255.255.255.0 采用虚拟网络接口配置的ip并没有与该台计算机绑定,换句话说就是不同计算机上的虚拟网络接口可以配置相同的ip地址;这时候的ip有一个专用的名字叫 VIP-虚拟ip。路由:是不同网络进行通信的信使,是桥梁;route命令用于查询和设置路由表查看本机路由表: route -n ,其输出信息中各个字段含义:Destination与Genmask :二者共同组合成一个完整的子网Gateway :定义从哪个gateway连接出去,如果是0.0.0.0则表示该路由是直接由本机传送,如果显示为其他IP,则表示必须要该ip帮忙才可以传送出去Flags : 可能的值为  U-route is up :路由是启动的 H- target is a host : 目标是一台主机而不是一个网域G - use gateway :需要通过外部的主机(gateway)来通信!- reject route :该条路由不被接受,用于阻挡不安全的网域metrix : 路由的跃点数,数字越低优先级越高use : 该路由被使用的次数,可以粗略估计通往指定网络的网络流量iface : 数据传送出去的硬件接口可以使用traceroute 来跟踪发往目标主机的路由路径。增加路由:route add -net 192.168.19.126 netmask 255.255.255.0 dev eth0DNS两把刀:    host与nslookup查看主机名字: hostname设置主机名字:/etc/sysconfig/network 文件DNS配置文件: /etc/resolv.confhost文件: /etc/hosts 该文件是主机名静态查询表Tcpdump :抓包工具例如:监控apache 80端口的数据包 (将数据保存为.pcap方便利用图形界面工具分析(wireshark之类))tcpdump tcp port 80 -s 0 -w http.pcapnetfilter/iptables - ip包过滤系统:netfilter是内核模块的实现,iptables是上层的操作工具。netfilter由一些信息包过滤表组成,每个表由若干链组成,而每条链中可以有多条规则。iptables通过socket接口对netfilter进行操作,
VFS : 虚拟文件交换系统
MMAP : linux进行虚拟内存管理的核心机制,虚拟内存是cpu的硬件特性,是开发多任务os的关键
select/EPOOL :
UDEV :
LVS : lvs与nginx及haproxy不同,他是在linux内核中实现的,工作在传输层(仅仅做分发,所以没有流量产生)是linux专享的负载均衡系统,LVS只是一个约定俗成的名字而已,在内核中有一个工专业名字 IP Virtual Server ,简称IPVS,源代码在net/netfilter/ipvs 目录下,lvs就是IPVS,以至于用于配置管理lvs的软件叫ivpsadm 。lvs的包转发策略:nat、ip隧道和直接路由。***就是利用IP隧道实现的(对于tcp而言,只要客户端请求的ip地址和应答的ip地址一致,就可以建立一个连接)IP隧道技术: 是一种将ip报文封装在另一个ip报文的技术,所以该技术也称为IP封装技术。只不过×××的IP隧道是静态的,两端的ip是固定的。但在lvs中却不能这样,因为需要将报文发送给一群RS(real server),所以采用动态,选中一个rs就建立一个隧道,并且,RS的VIP与LB所使用的ip一致,这样lb的应答与rs的应答就没有啥区别,客户端看到的是一样的ip。X-Window:c/s 结构,他不是一个直接的图形操作环境,是作为图形环境与内核之间交流的桥梁,任何厂商都可以在x window的基础上开发出GUI。他从逻辑上分为3层:x server(最底层的服务器)、x client(处在最外层,负责与用户直接交互,如KDE、GONME等)x 协议 : x通信协议linux厂商都是用相同的x window,但由于客户端不同,所以各大厂商发行的linux的GUI看起来各不相同。x window支持本地和远程两种模式(x server是否与x client在同一台机器)x client与具体的硬件无关,不关心什么显示器、键盘之类的,这些都交给x server。xorg基金会GTK+ 与QT 做图形开发
视频 :音频: amarok  视频: MPlayer、xine、VCL、KMplayer(Konqueror Media Player)Audacity-音频处理软件    GIMP-图像处理软件     、FFMPEG 、 inkscape(illustrator)LSB组织- Linux Standards Base   - 为推进linux的二进制的兼容性,LBS发布了最小支持的API集合。LSB制定了应用程序与运行环境之间的二进制接口。
POSIX - Portable Operation System Interface for Unix  :为了兼容不同unix的变种版本的API规范 Linux分支,主要分:RedHat、Slackware(它坚持KISS原则)、Debian,每个分支都有一个商业服务器级别的发行版,RHEL、 SUSE Linux Enterprise、Ubuntu Server

转载于:https://blog.51cto.com/langlichong/1847403

linux学习小记 (一 )相关推荐

  1. LINUX下USB1.1设备学习小记(2)_协…

    LINUX下USB1.1设备学习小记(2)_协议 (2009-03-27 14:40) 分类: 文章转载 USB协议: 先看USB接口 可以看出,在USB使用了4根线,分别为电源线,地线,信号线和差分 ...

  2. Xv6学习小记(二)——多核启动

    本文首发于我的个人博客QIMING.INFO,转载请带上链接及署名.(注:本文代码中的注释很重要,如看不清,可移步我的个人博客中查看) 在上文(Xv6学习小记(一)--编译与运行)中,我们介绍了Lin ...

  3. (2012.01.12-2012.04.01)八十二天的学习小记

    (2012.01.12-2012.04.01)八十二天的学习小记   哈哈,原来又是过了八十二个日子了,真快啊~这次发的学习小记日期记录时间有点长,回看1月份的东西,原来已经隔了八十多个日子了,对于这 ...

  4. 零基础也能用Linux ---深度Linux使用小记

    零基础也能用Linux ---深度Linux使用小记 深度2015新版ISO高速下载:http://pan.baidu.com/s/1bexAxS#path=%252FRelease 使用体验视频:h ...

  5. 深度Linux使用小记

    深度Linux使用小记 Deepin是由武汉深度科技有限公司开发的Linux发行版.Deepin 是一个基于 Linux 的操作系统,专注于使用者对日常办公.学习.生活和娱乐的操作体验的极致,适合笔记 ...

  6. 深度Linux使用小记 (附带视频)

    2019独角兽企业重金招聘Python工程师标准>>> 深度Linux使用小记 Deepin Linux是由武汉深度科技有限公司开发的Linux发行版.Deepin 是一个基于 Li ...

  7. annoy(快速近邻向量搜索包)学习小记 - pip命令学习与annoy基础使用

    1. 写在前面 在写fun-rec新闻推荐系统的YouTubeDNN召回的时候, 得到用户向量和新闻向量,基于用户向量,需要从海量新闻里面得到最相似的TopK个新闻, 此时需要用到快速向量检索技术,之 ...

  8. Linux学习之三-Linux系统的一些重要配置文件

    Linux学习之三-Linux系统的一些重要配置文件 1.网卡配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0 说明: DEVICE=eth0        ...

  9. linux学 java_[操作系统]Linux学习第二步(Java环境安装)

    [操作系统]Linux学习第二步(Java环境安装) 0 2017-05-19 00:02:21 jdk版本:jdk-8u131-linux-x64.rpm 注:以下操作在root用户或具有root权 ...

  10. 卧槽!华为大佬整理的Linux学习笔记和资料不小心流落到了外网.……

    资料汇总截图 一大牛整理了一套初学到进阶的Linux 学习资料,分享给大家 如何学习 如果是刚开始学习C语言的同学,我建议可以深入看下C语言里面的资料.当然了,如果你对自己的C语言比较自信,可以直接看 ...

最新文章

  1. PHP遍历用blade标签表示,php-Laravel Blade {{$variable或’Default Text’}}无法使用网址
  2. 牛客华为机试第2题python
  3. 字节跳动客户开发_实习|字节跳动 客户端实习生 1-5面 面经
  4. 互联网1分钟 |1113
  5. 多功能节点连线绘图控件Nevron Diagram for .NET使用方法及下载地址
  6. 在GZIDG弄服务器的这一整夜,快乐
  7. py第五天,列表的练习,每日菜谱
  8. opencv OCR 端到端场景文本检测与识别(webcam_demo) vs2015
  9. ENVI入门系列教程---一、数据预处理---4.2 自动采集控制点的RPC正射校正
  10. JavaScript----事件
  11. Linux打印服务-CUPS的安装、配置和使用
  12. 自强不息系列之Python 线性查找
  13. pyecharts 大小_[pyecharts1.7] 图表基础设置:大小、背景色、配色主题等
  14. New Year Snowmen(贪心)
  15. 手机版python3h如何自制游戏_教你如何用 Python 写一个小游戏
  16. C语言中求余运算符的注意事项
  17. 让人无法拒绝的内容种草营销
  18. 最火的Android开源项目整理
  19. Win11 msconfig修改后无法使用系统解决方法
  20. FreeNAS 安装与配置

热门文章

  1. 结对编程项目总结(王开207, 唐彬170)
  2. 配置Spring.NET
  3. oracle 显示 中文字体( client的字符集设置,将NLS_LANG改为UTF8即可)
  4. [笔记]3.软件代码中的BUG问题的一些记录
  5. 深度神经网络分布式训练指引
  6. Javascript 535种方式!!!实现页面重载
  7. javaScript 中创建json/转换字符串为json
  8. Linux内存使用消耗高
  9. 谈谈制作台历的心得——年初企业们比较喜欢的宣传方式
  10. photon四种同步方式_Map 四种同步方式的性能比较