系统配置
1,重启 init 6
2,修改主机名:/etc/hostname
/etc/hostname 和 /etc/sysconfig/network 的区别
3,新装CentOS Minimal无法使用ping命令, 是因为网卡默认关闭
打开方式:/etc/sysconfig/network-scripts/ifcfg-xxx(eth0/ensxx),属性ONBOOT=yes
4,新装CentOS Minimal无法使用ifconfig命令, 是因为此版本没有安装ifconfig
安装即可:yum -y install net-tools
5,集群基本网络环境配置(VMware虚拟机环境,根据个人虚拟机环境自行配置):
1) 删掉MAC地址:HWADDR
2) 删掉UUID:UUID
3) IP获取方式由默认动态DHCP为手动指定静态IP:BOOTPROTO=DHCP 改为 BOOTRPOTO=static
4) 指定静态IP:192.168.20.11(其他节点分配为12,13,14)
5) 指定子网掩码:NETMASK=255.255.255.0
6) 配置网关:GATEWAY=192.168.20.2
7) 配置DNS:DNS1=114.114.114.114 DNS2=8.8.8.8
$PATH:环境变量 echo $PATH ---> /usr/local/sbin:/usr/local/bin:/usr/sbin/:/usr/bin:/root/bin
$LANG:系统字符集 echo $LANG ---> en_US.UTF-8
Shell命令
type:判断命令是内部命令还是外部命令
[root@node01 ~]# type echo
echo is a shell builtin
[root@node01 dev]# type cd
cd is a shell builtin
[root@node01 ~]# type man
man is hashed (/usr/bin/man)
[root@node01 dev]# type -a ls
ls is aliased to `ls --color=auto'
ls is /usr/bin/ls
help:帮助命令,查询内部命令时使用
man:帮助命令,查询外部命令或以下信息时使用
1) 用户命令 (/bin,/usr/bin,/usr/local/bin)
2) 系统调用
3) 库文件(man system;)
4) 特殊文件(在/dev/目录中大量出现。如:块设备文件block, 字符设备character, 符号链接文件link, 命令管道文件pipe, 套接字文件socket)
5) 文件格式(man ext4;)
6) 游戏
7) 杂项(man ascii;man utf-8;)
8) 管理命令(/sbin, /usr/sbin, /usr/local/sbin)
whereis:定位命令位置
whereis cd;
whereis echo;
file:查看文件类型
[root@node01 ~]# file profile
profile: ASCII text
[root@node01 ~]# file testfile.txt
testfile.txt: UTF-8 Unicode text
echo:打印到标准输出
echo $$ (打印当前Shell的PID)
数组的定义与使用
[root@node01 ~]# a=(1 2 3)
[root@node01 ~]# echo a
a
[root@node01 ~]# echo $a
1
[root@node01 ~]# a=(1 2 3)
[root@node01 ~]# echo $a
1
[root@node01 ~]# echo ${a[2]}
3
[root@node01 ~]#
ps:
-fe:打印当前全部进程的全部信息
-f:(Do full-format listing.打印所有列)
-e:(Select all processes,与-A功能相同,打印所有行)
kill
-9:彻底杀死进程
kill -9 PID
hash:
[root@node01 ~]# hash
hits command
3 /usr/bin/df
2 /usr/bin/file
4 /usr/bin/touch
7 /usr/bin/stat
[root@node01 ~]# hash -r
[root@node01 ~]# hash
hash: hash table empty
df:(查看磁盘的使用情况,report File system Disk space usage)
-h(huma-readable):文件大小单位由1k-blocks改为B,MB,GB
du:(估计当前目录各文件的大小,类似于Windows以详细信息查看文件,estimate file space usage)
-h:如上
ln:(make links between files)
ln a b.H: 硬链接
ln -s a b.S: 软链接
stat file:查看文件状态(时间信息等)
[root@node01 ~]# stat profile
File: ‘profile’
Size: 1819 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 5377269 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2019-01-26 21:28:41.148086834 -0500
Modify: 2019-01-24 10:24:19.990023893 -0500
Change: 2019-01-24 10:24:19.990023893 -0500
Birth: -
touch file:刷新文件的时间信息
[root@node01 ~]# touch profile
[root@node01 ~]# stat profile
File: ‘profile’
Size: 1819 Blocks: 8 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 5377269 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2019-01-26 21:58:53.803115501 -0500
Modify: 2019-01-26 21:58:53.803115501 -0500
Change: 2019-01-26 21:58:53.803115501 -0500
Birth: -
cat:查看文件全部内容
more:一页一页的查看(阻塞)
less:B 往回翻(文件全部加载到内存)
head: -n 前n行
tail: -n 最后n行(其他用途: 阻塞住某文件tail -f file , 其他用户往该文件写操作时,tail -f 能捕获到追加内容)
cat hello.txt | head -3
echo "/" | ls -l 与 echo "/" | xargs ls -l
head -6 profile | tail -1 (输出文件的第6行)
Vim 使用
vim打开文件:
vim +3 hello.txt :打开文件并定位到第三行
vim + hello.txt : 定位到最后一行
vim +/string hello.txt : 打开文件并定位到首次出现string的行
vim -diff file1 file2: 对比文件差异
vim退出:
:q! 退出不保存
:w 保存
:w! 强制保存
:wq(:x) 保存并退出
:zz ??????
编辑模式:
字符级:hjkl
单词级:web
行内:0$^
行间:gg G 5G
段头: (
段尾:)
翻屏:ctrl+f/b
删除与替换:x 3x r
删除:dd 5dd dw 4dw
复制与粘贴:yy p yw 3yw
剪切:dd
撤销:u ctrl+r
全选:ggVG
输入模式:
末行模式:
set nu/nonu :显示行号
set readonly/noreadonly
/string :查找
:cmd : ":ls -al",":pwd"
:m,n>(将第m行到第n行向右缩进一个制表符)
:20-26< (将20-26行向左缩进一个制表符)
:ctrl+v,配合jk上下移动
查找:
查找并替换
全删:
多行注释:
1,ESC末行模式,Ctrl+v进入列选择模式
2,jk上下移动选择需要注释的行
3,shift+i, 进入插入模式,插入//或#号
4,按ESC,多行注释完成
删除多行注释:
1,ESC末行模式,Ctrl+v进入列选择模式
2,jk上下移动选择需要注释的行,hl选择列
3,d删除所选列
grep正则表达式:显示匹配行
-E 使用扩展表达式
-v 反显示
匹配操作符
"\": 转义
".": 匹配任意单个操作符 ".*":任意单个多次,就是任意多个字符
"[]": 满足其中一个条件即可[123],[^12],[a-k]
"^": 行首,以a开头的行,"abcd132"---"^[a]"
"$": 行尾
"\< \>": 匹配单词 \
"|": 连接,或关系
"\( \)": 选择操作符 "abc123abc hello 222 hellohello"---"\(abc\).*\1 \(hello\).*\2"
"\n": 反向引用
重复操作符
"?": 匹配0-1次
"*": 匹0-n次
"+": 匹配1-n次
"{n}": 匹配n次
"{n,m}": 匹配n-m次
扩展
\?, \+, \{, \|,\(,\)
例子:
grep "[0-9]\{4\}" hello.txt
grep -E "[0-9]{4}" hello.txt
cut:切割行
-d: 指定分隔符 cut -d' ' hello
-f: 取某列 cut -d' ' -f1-2 hello
-s: 不显示没有分隔符的行
sort:排序
默认按照字典序 sort hello
-n: 按照数值排序 sort -n hello
-r: 倒序
-t: 自定义分隔符
-k: 选择排序的列
-u: 合并相同行
-f: 忽略大小写
wc:统计行数,单词数,字符数
-l:
-w:
-c:
sed:行编辑器
无参数:不对源文件修改
-i: 修改到源文件 sed -i "5d" hello
"3p": 复制hello第3行 sed "3p" hello
"5d": 删除hello第5行 sed "5d" hello
"2\a": 在hello第2行后添加string | sed "2\a\string" hello
"5\i": 在hello第5行前添加string | sed "5\i\string" hello
"s/pattern/string/": 查找并替换,默认只替换每行中第一次被模式匹配到的字符串
正则匹配ip地址
如;匹配如下ip,更改第四个字节212 为22
192.168.255.212
sed "s/\(\(\([0-9]\|[1-9][0-9]\|1[0-9][0-9]\|2[0-4][0-9]\|25[0-5]\)\.\)\{3\}\).*/\122/" regularExp.txt
awk: 类似于报表
只显示/etc/passwd的账户(即第一列):
awk -F':' '{print $1}' passwd
只显示/etc/passwd的账户和账户对应的shell,
账户与shell之间以制表符分割,
而且在所有行开始前添加name,shell,
在最后一行添加"blue,/bin/bash":
awk -F':' 'BEGIN{print "name\tshell"}{print $1 "\t" $7}END{print"blue\tnoshell"}' testfile.txt
搜索/etc/passwd有root关键字的所有行:
awk '/root/{print $0}' passwd
统计/etc/passwd文件中,每行的行号,每行的列数,对应的完整行内容
awk -F':' '{print NR "\t" NF "\t" $0}' passwd
统计员工一月份的工资 (先用awk对每行分析,然后END)
awk -F'\t' '{split{$3,date,"-"};if(date[2]=="01"){name[$1]+=$5}END{for(i in name){print{name "\t" name[i]}}}}' testfile.txt
awk '{split($3,date,"-");if(date[2]=="01"){name[$1]+=$5};if($2=="0"){role[$1]="manager"}else{role[$1]="worker"}}END{for(i in name){print i "\t" name[i] "\t" role[i]}}' table.txt
//for(i in name){print role[i]}
{
split($3,date,"-");
if(date[2]=="01"){
name[$1]+=$5
};
if($2=="0"){
role[$1]="manager"
}else{
role[$1]="worker"
}
}
END{
for(i in name){
print i "\t" name[i] "\t" role[i]
}
}
权限管理:
例如:将两个用户加入到同一个组内,共享/share目录
useradd
useradd user01 (/home/user01, /var/spool/main/user01)
useradd user02
passwd user01
passwd user02
0,创建share组
groupadd share
mkdir /share
id user01: 打印用户或组的ID
1,将两个用户加入到share组
usermod -G share user01
usermod -G share user02
[root@node01 /]# id user01
uid=1001(user01) gid=1001(user01) groups=1001(user01),1003(share)
2,为/share文件夹添加所属组share
chown root:share share
drwxr-xr-x. 2 root share 4096 Jan 26 02:39 share
3,为组share添加读写/share目录的权限,删除其他用户的权限
(chmod augo)
chmod g+w /share
chmod o-rwx /share
4,但是会发生
-rw-rw-r--. 1 user01 user01 18 Jan 26 02:51 user01.txt
-rw-rw-r--. 1 user02 user02 18 Jan 26 02:55 user02.txt
该文件夹内的文件用户之间不能相互操作,文件所有者为文件增加所属组
user01$ chmod :share user01.txt
user02$ chmod :share user02.txt
-rw-rw----. 1 user01 share 18 Jan 26 02:51 user01.txt
-rw-rw----. 1 user02 share 18 Jan 26 02:55 user02.txt
文件夹的执行权限x,表示有没有进入的权限
一,源码编译安装
./configure ==> Makefile
make
make install
二,yum在线安装方式(可以通过替换文件 /etc/yum.repos.d 更换源)
yum search pcre(pcre-devel开发版 development file)
yum install -y package
yum info mysql-server
yum repolist enabled/all(启用的repo/全部的repo)
yum removre/erase
yum groupinstall
...
更换源的步骤
1、备份本地源yum.repos.d
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2、更换国内源(mirrors.aliyun.com)
CentOS 7
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
3、yum clean all
4、yum makecache
三,rpm本地包安装 rpm Command
-q|--query
-a|--all
-i|--install
-U|--upgrade
-e|--erase
-v|--verbose
-h|--hash(Print 50 hash marks as the package archive is unpacked. Use with -v|--verbose for a nicer display.)
1,rpm 安装本地*.rpm版jdk 并配置环境变量(不需要其它依赖包)
rpm -qa|grep jdk:
rpm -ivh jdk-7u80....: 安装rpm版jdk
安装完之后可以直接使用java -version,javac,javadoc,javaws命令
[root@node01 bin]# type java
java is /usr/bin/java
这是因为rpm包中自带脚本,安装时已经把部分命令添加到/usr/bin目录中了
但是还是需要手动重新配置环境变量。
export JAVA_HOME=/usr/java/jdk1.7.0_80
export PATH=$PATH:$JAVA_HOME/bin
2,rpm 安装本地*.rpm(下载完*.rpm文件后,还需要其它依赖包)
2.1 如果本地没有依赖包,需要根据提示,联网下载依赖包;
2.2 如果本地光盘中不仅有*.rpm包,还有其它依赖描述文件,可以通过创建本地yum按照源的方式,使用yum安装*.rpm
即伪yum安装:
CentOS安装光盘中有两个文件夹:Package和repodata
Package中全部是都是rpm包
repodata中记录rpm包的依赖关系,用来makecache。
本地直接安装单一rpm包容易出错,缺少依赖包
配置本地文件(file://)为yum源(此外还可通过ftp://, 默认通过网络http://)
修改/etc/yum.repos.d
[base]
name=local
baseurl=file:///mnt(比如软件包已经挂载到/mnt)
gpgchech=1
enable=1
yum clean all--> yum makecache
四,切换中文语言环境并安装中文帮助文档:
查看当前语言
echo $LANG
安装中文语言包
yum groupinstall "Chinese Support"(CentOS 6)
yum install kde-l10n-Chinese [ Chinese (Simplified Chinese) language support for KDE ] CentOS7
修改为中文环境
user01$ LANG=zh_CN.UTF-8
增加epel的repo(repository)
epel(RHEL 7)
wget -O file: Output-document
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
清除缓存,重建缓存
yum clean all && yum makecache
安装 man man-pages man-pages-zh-CN
yum install man man-pages man-pages-zh-CN