源码的安装:一般由3个步骤组成:配置(configure)、编译(make)、安装(make install)。Configure是一个可执行脚本,它有很多选项,在待安装的源码路径下使用命令./configure –help输出详细的选项列表。其中--prefix选项是配置安装的路径,如果不配置该选项,安装后可执行文件默认放在/usr /local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr /local/share,比较凌乱。如果配置--prefix,如:./configure --prefix=/usr/local/test 可以把所有资源文件放在/usr/local/test的路径中,不会杂乱。 用了—prefix选项的另一个好处是卸载软件或移植软件。当某个安装的软件不再需要时,只须简单的删除该安装目录,就可以把软件卸载得干干净净;移植软件只需拷贝整个目录到另外一个机器即可(相同的操作系统)。当然要卸载程序,也可以在原来的make目录下用一次make uninstall,但前提是make文件指定过uninstall。
长连接 Apache Thrift(RPC框架)
短连接 XML SOAP JSON
windows:netstat -ano | findstr
tasklist | findstr portnum
find / -name ‘tomcat’
locate interfaces linux系统中的文件,它比find命令快
whereis grep 可执行文件即二进制文件
which grep 查看系统命令是否存在,并返回系统命令所在的位置
ps -ef | grep nginx
-A 列出所有的进程 等价于-e (f 用树形格式来显示进程;)
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
smmsp 3521 0.0 0.7 6556 1616 ? Ss 20:40 0:00 sendmail: Queue runner@01:00:00 f
unzip -oq common.war -d common linux解压war包命令
ls -lh 看文件大小
env,可以查看环境变量。想设置某个临时文件变量,在shell里面输入export xxx=xxxx就行。想永久地设置的话,可以改/etc/bashrc,这个是系统变量,也是在文件里加上export xxx=xxxx,改用户变量的话,就在你用户的文件夹里面的.bashrc
一、linux CPU大小
[root@idc ~]# cat /proc/cpuinfo |grep "model name" && cat /proc/cpuinfo |grep "physical id"
model name: Intel(R) Xeon(TM) CPU 2.80GHz
model name: Intel(R) Xeon(TM) CPU 2.80GHz
model name: Intel(R) Xeon(TM) CPU 2.80GHz
model name: Intel(R) Xeon(TM) CPU 2.80GHz
physical id : 0
physical id : 0
physical id : 3
physical id : 3
[root@idc ~]#
说明:Linux下可以在/proc/cpuinfo中看到每个cpu的详细信息。但是对于双核的cpu,在cpuinfo中会看到两个cpu。常常会让人误以为是两个单核的cpu。
其实应该通过Physical Processor ID来区分单核和双核。而Physical Processor ID可以从cpuinfo或者dmesg中找到. flags 如果有 ht 说明支持超线程技术 判断物理CPU的个数可以查看physical id 的值,相同则为同一个物理CPU
可以看到上面,这台机器有两个双核的CPU,ID分别是0和3,大小是2.8G。
二、内存大小
[root@xbidc ~]# cat /proc/meminfo |grep MemTotal
MemTotal: 1034612 kB
三、硬盘大小
[root@xbidc ~]# fdisk -l |grep Disk
Disk /dev/sda: 300.0 GB, 300000000000 bytes
四、 更多查看linux硬件信息的方法
uname -a # 查看内核/操作系统/CPU信息的linux系统信息命令
head -n 1 /etc/issue # 查看操作系统版本,是数字1不是字母L
cat /proc/cpuinfo # 查看CPU信息的linux系统信息命令
hostname # 查看计算机名的linux系统信息命令
lspci -tv # 列出所有PCI设备
lsusb -tv # 列出所有USB设备的linux系统信息命令
lsmod # 列出加载的内核模块
env # 查看环境变量资源
free -m # 查看内存使用量和交换区使用量
df -h # 查看各分区使用情况
du -sh # 查看指定目录的大小
grep MemTotal /proc/meminfo # 查看内存总量
grep MemFree /proc/meminfo # 查看空闲内存量
uptime # 查看系统运行时间、用户数、负载
cat /proc/loadavg # 查看系统负载磁盘和分区
mount | column -t # 查看挂接的分区状态
fdisk -l # 查看所有分区
swapon -s # 查看所有交换分区
hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
dmesg | grep IDE # 查看启动时IDE设备检测状况网络
ifconfig # 查看所有网络接口的属性
iptables -L # 查看防火墙设置
route -n # 查看路由表
netstat -lntp # 查看所有监听端口
netstat -antp # 查看所有已经建立的连接
netstat -s # 查看网络统计信息进程
ps -ef # 查看所有进程
top # 实时显示进程状态用户
w # 查看活动用户
id # 查看指定用户信息
last # 查看用户登录日志
cut -d: -f1 /etc/passwd # 查看系统所有用户
cut -d: -f1 /etc/group # 查看系统所有组
crontab -l # 查看当前用户的计划任务服务
chkconfig –list # 列出所有系统服务
chkconfig –list | grep on # 列出所有启动的系统服务程序
rpm -qa # 查看所有安装的软件包
-ivh 要安装的rpm文件包
cat /proc/cpuinfo :查看CPU相关参数的linux系统命令
cat /proc/partitions :查看linux硬盘和分区信息的系统信息命令
cat /proc/meminfo :查看linux系统内存信息的linux系统命令
cat /proc/version :查看版本,类似uname -r
cat /proc/ioports :查看设备io端口
cat /proc/interrupts :查看中断
cat /proc/pci :查看pci设备的信息
cat /proc/swaps :查看所有swap分区的信息
Linux查看程序端口占用情况: way 1:netstat –apn ps -aux | grep pid
way 2:netstat -anp | grep portno
chp:0:
1.计算机:接受用户输入指令和数据,经由中央处理器的数据与逻辑单元运算处理后,以产生或储存成有用的信息
2.五大单元:输入、输出单元,cpu内部的控制单元、算术逻辑单元与内存
3.数据会流进/流出内存是cpu所发出的控制指令,而cpu实际要处理的数据则完全来自于内存
4.cpu依设计理念主要分为精简指令集(RISC)Reduced Instruction Set Computing和复杂指令集(CISC)Complex Instruction Set Computer系统
5.CPU频率:外频指的是cpu与外部组件进行数据传输时的速度,倍频则是CPU内部用来加速工作性能的一个倍速,两者相乘才是CPU的频率速度 6.一般主板芯片组分为北桥和南桥,北桥的总线称为系统总线,因为是内存传输的主要信道,所以速度较快。南桥则是所谓的输入/输出总线(I/O)总线,主要连接硬盘、USB、网卡等接口设备
7.北桥所支持的频率我们称之为前端总线速度(front side bus,FSB),而每次传送的位数则是总线宽度
8.CPU每次能够处理的数据量成为字组大小(word size),字组大小依据cpu的设计而有32位与64位之分。我们现在所称的计算机是32位或64位主要是依据这个cpu解析的字组大小而来的
9.个人计算机的内存主要组件为动态随机访问内存(Dynamic Random Access Memory,DRAM),至于cpu内部的第二层缓存则使用静态随机访问内存(Static Random Access Memory,SRAC)
10.BIOS(Basic Input Output System)是一套程序,这套程序是写死到主板上面的一个内存芯片中,这个内存芯片在没有通电时也能够将数据记录下来,那就是只读存储器(Read only Memory,ROM)
11.显卡的规格有PCI/AGP/PCIe,目前主流为PCIe接口
12.硬盘是由盘片、机械手臂、磁头与主轴马达所组成的,其中盘片的组成为扇区、磁道与柱面。
13.操作系统其实也是一组程序,这组程序在于管理计算机的所有活动以及驱动系统中的所有硬件。 14.操作系统仅在于驱动与管理硬件,而要使用硬件时,就得需要通过应用软件或者是shell的功能,来调用操作系统操纵硬件工作。目前,操作系统出了上述功能外,通常已经包含了日常工作所需的应用软件在内了。
OS:主要用于管理与驱动硬件,因此必须要能够管理内存、管理设备、负责进程管理以及系统调用。
chp1:
Linux distribution 是“Linux kernel + Free Software + Documentations(Tools) + 可完全安装的程序”所制成的一套完整的系统
uname -r 内核版本
GNU General Public License (GPL)
chp2:
Linux在企业应用方面:着重于网络服务器、关键任务的应用(金融数据库、大型企业网管环境)及高性能运算的人物
Linux在个人环境的使用上着重于桌面计算机、手持系统(PDA,手机)、嵌入式设备(如家电用品)
目标shell:正则表达式、管道命令与数据流重定向,编写shell脚本
chp3:
1.新添硬件需要考虑的角度有:游戏机/工作机,性价比,支持度
2.磁盘(IDE /dev/hd[a-d],SATA/SCSI/USB /dev/sd[a-p])的第一个扇区主要记录了两个重要的信息,分别是:1.主引导分区(Master Boot Record,MBR):可以安装引导加载程序的地方,有446bytes;2.分区表(partition table):记录整块硬盘分区状态,有64bytes。
3.磁盘的主分区与扩展分区最多可以有四个,逻辑分区的设备文件名号码一定由5开始
4.开机的流程:BIOS->MBR->boot loader(提供菜单,加载内核,转交控制权给其他的loader)->内核文件
5.boot loader可以安装的地方有两个:MBR 与 boot sector
6.Linux操作系统的文件使用目录树系统,与磁盘的对应需要有“挂载”的操作才行。
ch4:
1.不论你要安装什么样的linux操作系统,都应该要事先规划,例如分区‘引导装载程序(grub:最好安装在MBR)等
2.分区:/ ,/boot强制分配柱面1 ,/home,swap(自动后移)四个分区
3.调整开机设备启动的顺序必须要重新启动并进入BIOS系统调整。
4.安装CentOS5.x的结构至少有两种,分别是图形界面与文字界面
5.若安装笔记本电脑时失败,可尝试在开机时加入:inux nofb apm=off acpi=off 来关闭省电功能
6.安装过程进入分区后,请以“自定义的分区结构”来处理自己规划的分区方式
7.在安装过程中,可以创建软件磁盘阵列(software RAID)。
8.一般要求swaq应该在1.5~2倍的物理内存量,现在电脑内存较大 可以不分配
9.没有连接到Internet,可尝试关闭防火墙,但SELinux最好选择“强制”状态。不启动供内核开发者查阅死机数据的kdump
ch5:
1.Ctrl + Alt +F1~F6 tty1~tty6 startx +F7
2.exit 注销
3. 转义字符
4.quit
5.重要的热键:Tab(twice):接在一串命令的第一个命令的后面,则为“命令补全”
接在一串命令命令的第二个命令以后时,则为“文件补全”
Ctrl-c: 中断目前程序
Ctrl-d:相当于exit
6.-bash:~ command not found
1.这个命令不存在,因为该软件没有安装之故,解决办法就是安装该软件
2.这个命令所在的目录目前的用户并没有将它加入命令搜索路径中,请参考bash的PATH说明
3.打错命令
7.man(manual操作说明:查询命令或者是相关文件的用法) 某个命令 space 向下翻页,q离开 /(向下)?(向上)查找指定字符串{n正向 N反向} Home首页 end尾页 Pageup pagedawn上/下一页 -f 取得与man更多的相关信息
man page:
命令后面的数字(num)
1、用户在shell环境中可以操作的命令或可执行文件
4、设备文件的说明,通常在/dev下的文件
5、配置文件或者某些文件的格式
8、系统管理员可用的管理命令
NAME:先看下name的项目,约略看一下这个数据的意思
DESCRIPTION:在仔细看一下description,这个部分会提到很多相关的资料和用法,可以学到细节
OPTIONS:可以知道每个选项的意义,这样就可以执行比较细部的命令内容
SEE ALSO:最后再看一下跟这个资料有关的还有哪些东西可以使用
FILES:某些说明内容还会列举有关的文件来供我们参考
技巧:打印的相关命令只记得lp(line print),
1.man lp找相关的说明
2.lp【tab】【tab】找到任何以lp为开头的命令,找到有点相关的命令之后,继续man该命令
info page(在线求助):Tab键可以在各个超链接间移动
File:代表这个info page的数据来自由~文件提供的 Node:Top,代表目前的这个页面属于Top节点。意思是info.info内含有很多信息,而Top仅是i nfo.info文件内的一个节点内容而已。
Next:Getting Started,你也可以按“N”到下个节点去。
Up:回到上一层的节点总揽界面,你也可以按下“U”回到上一层。
Prev:前一个节点,Top(是第一个节点 无)
bash所在目录:/usr/share/doc/bash-versionnum
5.4 超简单文本编辑器:nano
nano + new or old file
Ctrl-G(表示^G)Get Help:取得在线帮助(help)
Ctrl-X:Exit,离开nano软件,若有修改过文件会提示是否需要保存。
Ctrl-O:WriteOut,保存文件,若你又权限的话就能够保存文件了
Ctrl-R:Read FILE, 从其他文件读入数据,可以将某个文件的内容贴在本文件中
Ctrl-C:Cur Pos,说明目前光标所在处的行数与列数等信息
Ctrl-W:Where Is,查询字符串,
Ctrl-_:可以直接输入行号,让光标快速移动到改行
Alt-Y:校正语法功能开启或关闭
Alt-M(M-M):可以支持鼠标来移动光标的功能
5.5:正确的关机方法
查看系统的使用状态
who目前有谁在线
netstat -a:查看网络 的联机状态
ps-aux:看后台执行的程序
sync:将数据同步写入磁盘中
shutdown:惯用关机
reboot,halt,poweroff;重启 关机
运行级别:
run level0:关机(init 0 关机 )
run lever3:纯命令行模式
run level5:含有图形用户模式
ren level6:重启
5.6 忘记root密码:读秒时按e进入grub模式,进入kernel 按e 输入single enter 按b 进入单用户模式 使用passwd修改密码
5.7:为了避免瞬间断电造成的Linux系统损害,建议作为服务器的Linux主机应该加上不断电系统来持续提供稳定的电力。
6.2:Linux文件属性
d:目录 (read write execute) 连接数 所有者 用户组 文件容量 修改日期 文件名
-:文件 4 2 1 有多少 .隐藏文件
l:连接文件 文件名
b:表示设备文件里面的可供存储的接口设备 连接到
c:设备文件里面的串行端口设备,例如键盘,鼠标 此节点
修改系统配置文件(语言lang) /etc/sysconfig/i18n
对目录没有写权限 不能新建文件或目录 没有执行权限 不能进入该目录
★对目录的rxe
r:读取目录结构列表的权限:ls
w:更改该目录结构列表的权限(new delete rename move)
e:进入该目录成为工作目录(既无法执行该目录下的任何命令)
chgrp:修改文件所属用户组:change group 要被改变的组名必须要在/etc/group文件内存在才行 chgrp -R(递归目录) groupname dirname/filename filename
chowm:修改文件所有者 change owner /etc/passwd中存在 chown -R username[:groupname] filename/dirname
chmod:修改文件的权限 chmod -R【递归】 xyz(读写执行的数字和) 文件或目录
cp 源文件 目标文件 (文件的属性不变 )
u +加入 r
chmod g -除去 w 文件或目录
o =设置 x
a
practice mkdir +dirname touch +filename rm +filename
文件扩展名:.sh 脚本或批处理文件,因为批处理文件使用shell写成,所以扩展名就编成.sh
Z .tar .tar.gz .zip .tgz:经过打包的压缩文件
.html .php 网页相关文件
单一文件或目录的最大容许文件名为255字符,包含完整路径名称及目录(/)的完整文件名为4096个字符
7.1
cd change directory -(前一个工作目录)
pwd print work directory -P(显示出当前的工作目录 针对链接文件)
mkdir make directory -p(自行创建多层目录) -m(创建的时候指定权限)
rmdir -p(连同上层的空目录一起删除)
rm -r:删除非空目录
用户能使用的命令是依据PATH变量锁规定呃目录去查找的,不同的身份(root与一般用户)系统默认的PATH并不相同。差异较大的地方在于/sbin和/usr/sbin
ls 可以查看文件的属性 -d显示当前目录信息 -a包括隐藏文件 -l属性
cp rm mv 复制,删除 移动
scp -r root@192.168.80.48:/opt/apache-tomcat-8.5.13 /opt scp [源用户名和IP地址]服务器用户名@iP地址:服务端文件路径 客户端保存路径【本机】
拷贝含有子目录的文件夹加入-r参数,
cat tac nl more less head tail od:读文件
touch的目的在修改文件的时间参数,但也可以用来创建空文件
一个文件的时间参数有三种:access time ,status time, modification time:ls默认显示mtime
除了传统的rwx权限之外,在Ext2/Ext3文件系统中,还可以使用chattr与lsattr设置及查看隐藏属性。常见的包括只能新增数据的+a与完全不能更改文件的+i属性
新建文件/目录时,新文件的默认权限使用umask来规范。默认目录完全权限为:drwxrwxrwx,文件则为-rw-rw-rw-rw-rw
文件具有SUID的特殊权限时,代表当用户执行此二进制文件制程序时,在执行过程中用户会暂时具有程序所有者的权限(/usr/bin/passwd)
目录具有SGID的特殊权限时,代表用户在这个目录下面新建的文件用户组都会与该目录的用户组名同名
目录具有SBIT的特殊时,代表在该目录下用户创建的文件只有自己与root能够删除
file 查看文件的类型
which type 查找命令的完整文件名,都是通过PATH变量来查找文件名
whereis locate 要查找文件的完整文件名(到数据库中查找)
利用find可以加入许多参数来直接查询文件系统,以获得自己想要知道的文件名
:w 保存文件但不退出vi
:w file 将修改另外保存到file中,不退出vi
:w! 强制保存,不推出vi
:wq 保存文件并退出vi
:wq! 强制保存文件,并退出vi
q: 不保存文件,退出vi
:q! 不保存文件,强制退出vi
:e! 放弃所有修改,从上次保存文件开始再编辑
8:1. etx2文件系统:数据访问为索引式文件系统(indexed allocation)
1、superblock:记录此文件系统的整体信息,包括inode/block的总量、使用量、剩余量,以及文件系统的格式与相关信息等。
2、inode:记录文件的属性,一个文件占用一个iNode,同事记录次文件的数据所在的block号码·
3、block:实际记录文件的内容,若文件太大时,会占用多个block
2.需要碎片整理的原因就是文件写入的block太过于离散了,此时文件读取的性能将会变得很差所致。这个时候可以通过碎片整理将同一个文件所属的blocks汇集在一起
3.Ext2文件系统主要有:boot sector,superblock,inode bitmap,block biemap,inode table,data block
4.data block是用来放置文件内容数据地方,在Ext2文件系统中所支持的block大小有1、2、4KB三种
5.inode记录文件的属性、权限等数据,每个inode大小均固定为128bytes;每个文件都仅会占用一个inode而已;因此文件系统能够新建的文件数量与inode的数量有关
6.文件的block记录文件的实际数据,目录的block则记录该目录下面文件名与其inode号码的对照表
7.日志(journal)文件系统会多出一块记录区,随时记载文件系统的主要活动,可加快系统恢复时间
8.Linux文件系统为增加性能,会让主存储器作为大量的磁盘高速缓存
9.实际连接只是多了一个文件名对该inode号码的连接而已。(文件系统的inode 和 block数量都不会减少)
10.符号连接就类似Windows的快捷方式功能(作为一个独立的新文件)(占用一个inode和一个block)
11.磁盘的使用必须经过分区、格式化与挂载,分别管用的命令为fdisk、mkfs、mount
fdisk -l # 查看所有分区
fdisk /dev/sda n p w
partprobe 可以使kernel重新读取分区表(maybe you need install this software)
mkfs -t ext3 /dev/sdax
mount /dev/sdax /mnt
12.开机自动挂载可参考/etc/fstab的设置,设置完毕务必使用mount -a测试语法正确否。
9.tar 压缩:tar -jcv -f filename.tar.bz2 + 被压缩的文件或目录名称
查询:tar -jtv -f filename.tar.bz2
解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录
j:bzip2支持 z:gzip支持
c:新建打包文件 x:解打包或解压缩
v:在压缩或者解压的过程中,将正在处理的文件名显示出来 t:查看打包文件的内容含有哪些文件名
-f:加要被处理的文件名
--exclude=FILE:在压缩的过程中,不要将FILE打包
-p(重点在于保留原文本文件的权限与属性之意)
—P(保留文件原路径 解压会覆盖掉现有文件)
1.仅解开单一文件:使用-jtv找到所要的文件名,然后对该文件名解压
寻找;tar -jtv -f /root/filename.tar.bz2 | grep '记录在filename.tar.bz2内的文件名(关键字即可)'
解压:tar -zxv -f /root/filename.tar.gz etc/shadow
2.打包某目录,但不包含该目录下的某些文件
tar -jcv -f /root/filename.tar.bz2 --exclude=/root/etc* (换行:并立即按下Enter)
> --exclude=/root/filename.tar.bz2(排除自己) /etc/root
3.仅备份比某个时刻还有新的文件
1. find /etc -newer /etc/passwd(找出比/etc/passwd还要新的文件)
2.ll /etc/passwd 查看时间
3.tar -jcv -f /root/etc.newer.then.passwd.tar.bz2 --newer-mtime="2016/10/18" /etc*备份
4.tar -jtv -f /root/etc.newer.then.passwd.tar.bz2 | grep -v '/$':显示tar.bz2内的结尾非/的文件名
4、磁带机(一次性读写设备不能使用cp)备份
tar -cv -f /dev/st0 /home /root /etc :将home root etc备份
important points:
压缩命令为通过一些运算方法去将原本的文件进行压缩,以减少文件所占用的磁盘空间。压缩前与压缩后的文件所占用的磁盘空间比值,就可以称为 压缩比
压缩的好处是可以减少磁盘空间的浪费,在www网站也可以利用文件压缩的技术来进行数据的传送,好让网站带宽的可利用率上升。
压缩文件的扩展名大多是tar.* tar.gz *.tgz *.gz *.Z *.bz2
bzip2压缩比好于gzip
tar可以用来进行文件打包,并可支持gzip或bzip2的压缩
dump命令可备份文件系统或单一目录。
dump的备份若针对文件系统是,可进行0~9的level差异备份。其中level0为完整备份
restore命令可还原被dump构建的 备份文件
要新建光盘刻录数据时,可通过mkisofs命令来构建
可通过cdrecord来写入CD后DVD刻录机
dd可备份完整的分区或磁盘,因为dd可读取磁盘的扇区表面数据
cpio为相当优秀的备份命令,不过必须要搭配类似find命令来读入欲备份的文件名数据,才可进行备份操作。
10.vi vim
一般模式
Ctrl+f、b(向下、上移动一页)
0或home、$或end(移动到这一行最前面、后面字符处)
G移动到这个文件的最后一行
gg移动到这个文件的第一行,相当于1G
N【enter】光标向下移动N行
/word 向下寻找一个名称为word的字符串
?word 向上寻找一个word字符串 【n N下一个 上一个】
:n1,n2s/word1/word2/g 在n1行和n2行之间寻找word1,并替换为Word2
:1,$s/word1/word2/g 从第一行到最后一行查找word1 并替换为Word2
:1,$s/word1/word2/gc 从第一行到最后一行查找word1 并替换为Word2,替换之前确认
x X向前 向后删除一个字符
dd 删除整行
ndd向下删除n行
yy复制光标所在你的那一行 p P粘贴到光标所在的下一行、上一行
u复原前一个操作
Ctrl+r 重做上一个操作
.重复上一个操作
快操作:v:字符选择,会将光标经过的地方反白选择
V:行选择
Ctrl+v 用长方形的方式选择
y :复制
d:删除
编辑模式
i l:光标处插入 在目前所在行的第一个非空格符处开始插入
a A:光标所在下一个字符插入 所在行的最后一个字符处插入
o O:在光标下、上一行插入新行,
r R:替换光标所在的字符一次 一直替换光标所在的文字 esc为止
命令行模式
:w 将编辑的数据写入磁盘文件中
:w! 如果文件是只读 强制写入。但是能不能写入与对该文件的文件权限有关
:q离开 +!强制离开不保存文件
:wq保存后离开 +!强制保存后离开
:set nu nonu 显示、取消行号
:sp【filename】 在新窗口启动另一个文件(不加 本文件)
ctrl+w 方向键 上下窗口移动 +q离开
:set [all] (设置样式) 可以写入~/.vimrc
iconv可以进行语系编码的转换
iconv [选项…] [文件…]
-f, –from-code=名称 原始文本编码
-t, –to-code=名称 输出编码 信息
-o, –output=FILE 输出文件
file ceb_merchant.properties
iconv -f *** -t utf-8 ceb_merchant.properties >ceb_merchant1.properties 这个命令读取ceb_merchant.properties文件,从***编码转换为utf-8编码,其输出定向到ceb_merchant1.properties文件。
dos2UNIX及UNIX2dos可以变更文件每一行的行尾断行字符
11.4 命令运行的顺序 可通过type -a command查看某个命令的执行顺序
1.以相对/绝对路径执行命令,例如“/bin/ls”或“./ls”
2.以alias找到该命令来执行
3.有bash内置的(builtin)命令来执行
4.通过$PATH这个变量的顺序找到的第一个命令来执行
*:login shell的执行流程
1>>/etc/profile 2>> ~/.bash_profile 3>>开始操作bash
2>>/etc/inputrc 3>> ~/.bashrc(最后读取的文件)
2>>/etc/profile.d/*.sh <<5 4>>/etc/bashrc
3>>/etc/sysconfig/i18n
source 配置文件名 (读入环境配置文件)
important:
1.由于内核在内存中是受保护的块,因此我们必须要通过“shell”将我们输入的命令与kernel通信,好让kernel可以控制硬件来正确无误的工作。
2.学习shell的原因:命令行界面的shell在各大distribution都一样;远程管理时命令行页面速度较快;shell是管理linux系统非常重要的一环,因为linux内很多控制都是以shell编写的。
3.系统合法的shell都写在/etc/shells文件中
4.用户默认登录取得的shell记录于/etc/passwd的最后一个字段
5.bash的主要功能:命令编辑功能,命令与文件补全功能,命令别名设置功能,作业控制,前台、后台控制,程序化脚本,通配符
6.type可以用来找到执行命令为何种类型,也可以用于与which相同的功能
7.变量就是以一组文字或符号等来替换一些设置或者是一串保留的数据
8.变量主要有环境变量和自定义变量,或称为全局变量和局部变量
9.使用env、export可以查看环境变量,其中export可以将自定义变量转化成环境变量。
10.set可以查看目前bash环境下的所有变量
11.$?也为变量,是前一个命令执行完毕之后的回传码。在linux中回传码是0表示执行成功。
12.locale可以用于查看语系数据
13.可用read让用户由键盘输入变量的值
14.ulimit可用以限制用户使用系统的资源情况。
-a后面不接参数 可列出所有的限制额度
15.bash的配置文件主要分为loginshell与non-login shell。login shell主要读取/etc/profile与~/.bash_profile,non-login shell则仅读取~/.bashrc.
16.通配符主要有* ? [].
17.数据流重定向通过>,2>,<之类的符号将(本来)要输出(到页面)的信息转到其他文件或设备去。
18.连续命令的执行可通过 ; && || 等符号来处理
19.管道命令的重点是它仅会处理standard output,对于standard error output 会予以忽略。管道命令必须要能够接收来自前一个命令的数据成为standard input 继续处理才行
20.管道命令(按行解析):cut grep sort wc uniq tee tr col join paste expand split xargs等。
grep [-acinv] [--color=auto] '查找字符串' filename或standard output
-a将binary文件以text文件的方式查找数据
-c计算找到‘查找字符串’的次数
-i忽略大小写的不同
-n顺便输出行号
-v反向选择 即选择没有的那一行
12 1.正则表达式就是处理字符串的方法,它是以行为单位来进行字符串的处理行为
2.正则表达式通过一些特殊符号的辅助,可以让用户轻易达到查找、删除、替换某特定字符串的处理程序
3.只要工具程序支持正则表达式,那么该工具程序就可以用来作为正则表达式的字符串处理之用
4.正则表达式与通配符是完全不一样的。通配符wildcard代表的是bash操作接口的一个功能,但正则表达式是字符串处理的表示方式
5.使用grep或其他工具进行正则表达式的字符串比较时,因为编码的问题会有不同的状态,因此,最好将LANG等变量设置为C或者是en等英文语系
6.grep与egrep在正则表达式里面是很常见的两个程序,其中,egrep支持更严谨的正则表达式的语法
7.由于编码系统的不同,不同的语系LANG会造成正则表达式选取数据的区别,一次可以利用特殊符号[:upper:][:alnum:][:alpha:][:lower:]来代替标码范围较佳
8.扩展性的正则表达式: egrep -v '^$|^#' filename
+重复一个或一个以上的前一个RE字符 ?
|用或的方式找出数个字符串
()找出“组” 字符串
()+多个重复组的判别
9.基础正则表达式的特殊字符有:* ? [] [-] [^] ^ $ [n,m]
10.常见的正则表达式工具:grep sed vim sed 's/原字符串/替换字符串/'
11.printf可以通过一些特殊符号来将数据进行格式化输出
12.awk使用“字段”为依据,进行数据的重新整理与输出
13.文件的比较中,可利用diff及cmp进行比较,其中diff主要利用纯文本文件方面的新旧版本比较
14.patch命令可以将旧版的数据更新到新版(主要由diff创建patch的补丁来源文件)
例:找到/etc下含有*號的文件與內容 grep '*' $(find /etc -type f)
find / -type f | xargs -n 10 grep '*' 先用find去找文件,用xargs將這些文件每次丟10個給grep來作為參數處理 grep開始查找文件內容
find / -type f | xargs -n 10 grep -l '*' 只顯示文件名
13.shell script:是利用shell的功能所寫的一個程序,這個程序是使用【純文本文件】,將一些shell的語法和命令(含外部命令)寫在裡面,搭配正則表達式、管道命令與數據流重定向等功能,以達到我們所想要的處理目的。而且shell script更提供數組、循環、條件與邏輯判斷等重要功能,讓用戶可以直接以shell來
1.命令的执行是从上而下、从左而右地分析与执行
命令、参数间的多个空白都会被忽略掉
空白行会会忽略掉,并且tab键所得的空白同样被视为空格键
如果读取到一个Enter符号(CR),就尝试开始执行该行(或该串)命令
可以使用Enter来扩展至下一行
#批注
2.执行方法
直接命令执行 绝对/相对路径
变量PATH的功能:将shell.sh放在PATH指定的目录内,例如:~/bin/。【该脚本具有rw权限】
以bash进程来执行:通过“bash shell.sh” "sh shell.sh"来执行。【该脚本需要具有r权限】
3.编码规范
script的功能
script的版本信息
script的作者与联络方式
版权声明方式
History(历史记录)
script内较特殊的命令,使用“绝对路径”的方式来执行
script执行时需要的环境变量预先声明与设置
4.vim own shell script
$()是执行里面的代码得到的结果
${}是参数,{}是为了避免后面的影响到了
${fileuser:-"filename"} 如果fileuser是空 能返回filename
$(date --date='1 days ago' +%Y%m%d) 前两天的日期 日期显示格式
5.source filename.sh 让该文件在当前bash下执行
14:用户,组
id 用户名 查看指定用户信息
useradd bigdata (创建用户)
passwd bigdata (设置密码)
将bigdata加入root用户组 :先以root身份登录,然后输入 usermod -g root bigdata
压测:
../bin/logstash -f sysLog.conf | pv -abt > /dev/null
安装pv wget http://www.ivarch.com/programs/sources/pv-1.5.3.tar.bz2 查看到命令执行的进度
tar xjf pv-1.5.3.tar.bz2
cd pv-1.5.3
# ./configure
# make && make install
yes "<44>May 19 18:30:17 snack jls: foo bar 32" | nc localhost 3000
nc: nc -z -w 1 192.168.80.48 9200 试试连接
[-hlnruz][-g<网关...>][-G<指向器数目>][-i<延迟秒数>][-o<输出文件>][-p<通信端口>][-s<来源位址>][-v...][-w<超时秒数>][主机名称][通信端口...]
yes:重复输入其后的字符串
pv:将/home/ftp/vqiu 目录下打包文件名称为vqiu@yy-mm-dd
tar -p -cf - /home/ftp/vqiu | pv --size `du -sk /home/ftp/vqiu | cut -f 1`k | gzip >/home/ftp/vqiu@`date +%y-%m-%d`.tar.gz