[toc]
A
B
C
cat
- 将整个文件的内容从上到下显示在屏幕上
chown
用途:将指定文件的拥有者改为指定的用户或组
- 用户可以是用户名/用户ID;
- 组可以是组名/组ID;
- 文件是以空格分开的要改变权限的文件列表,支持通配符。
使用权限:root
语法:chown [-cfhvR] [--hlep] [--version] user[:group] file...
-c:显示更改的部分信息
R:处理指定目录以及其子目录下的所有文件
-v:显示详细的处理信息
chmod
用途:修改文件和文件夹读写执行
属性
使用权限:所有使用者
语法:chmod [-cfvR] [--help] [--version] mode file
mode:权限设定字串,
[ugoa...] [[+-=] [rwxX]...] [,...]
其中:u表示文件的拥有者,g表示与该文件的拥有者属于同一群体者,o表示其他以外的人,a表示ugo皆是
+表示增加权限,-表示取消权限,=表示唯一设定权限
r(=4)表示可读取,w(=2)表示可写入,x(=1)表示可执行,X表示只有当该文件是个子目录或者 该文件已经被设定为可执行
D
df
#显示目前在Linux系统上的文件系统的磁盘使用情况统计
du
#显示指定的目录或文件所占用的磁盘空间
E
echo
NAME
echo - display a line of text
SYNOPSIS
echo [SHORT-OPTION]... [STRING]...
echo LONG-OPTION
DESCRIPTION
Echo the STRING(s) to standard output.
-n do not output the trailing newline
-e enable interpretation of backslash escapes
-E disable interpretation of backslash escapes (default)
--help display this help and exit
--version
output version information and exit
If -e is in effect, the following sequences are recognized:
\\ backslash
\a alert (BEL)
\b backspace
\c produce no further output
\e escape
\f form feed
\n new line
\r carriage return
F
G
grep
用途:Global Regular Expression Print用于查找文件里符合条件的字符串
,默认情况下输出匹配内容所在的行。
语法:
#常见格式
grep [选项] "模式" [文件]
H
head
# head [参数] [文件]
head -q
I
J
K
kill
用途:删除执行中的程序或工作
语法:
#杀死进程
kill PID
#强制杀死进程
kill -KILL PID
#彻底杀死进程
kill -9 PID
#杀死指定用户所有进程
kill -9 $(ps -ef|grep user)
kill -u user
L
ln
为某一个文件在另外一个位置建立一个同步的链接;当我们需要在不同的目录,使用相同的文件时,不需要再每一个需要的目录下都放一个必须相同的文件,只需要在某个固定的目录,放上该文件,然后在其他的目录中用ln命令链接它就可以,不必重复的占用磁盘空间
。
链接:
硬链接:A是B的硬链接(A,B都是文件名),则A的目录项中的inode节点号与B的目录项中的inode节点号相同,
一个inode节点对应两个不同的文件名
,两个文件名指向同一个文件,A、B对文件系统来说是完全平等的,不能跨越文件系统,不能对目录进行链接
;软链接:A是B的软链接(A,B都是文件名),则A的目录项中的inode节点号与B的目录项中的inode节点号不相同,
A和B指向的是两个不同的inode,继而指向不同的数据块(block),但A的数据块中存放的只是B的路径名
。软链接可以跨文件系统,可以对不存在的文件名进行链接,可以对目录进行链接
#给log2013.log文件创建软链接link2013,如果log2013.log丢失,link2013将失效 ln -s log2013.log link2013 # 为log2013.log创建硬链接ln2013,这两个文件的各项属性相同 ln log2013.log ln2013
M
mkdir
用途: 可以用来创建目录,如果不加创建路径即在本路径下创建一个新的指定的目录,否则即在给出的路径下创建目录 。
语法:
#在本路径下创建一个名为test的目录
$ mkdir test
#一次创建3个目录
$ mkdir test1 test2 test3
#-p如果上级目录没有创建,即创建输入路径上的所有目录
$ mkdir -p /test1/test2/test3
# -m 创建目录并设置读写执行权限(r-4,w-2,x-1)
$ mkdir -m 777 test
more
- 将整个文件的内容一页一页的显示
mv
用途:为文件或目录改名;将文件或目录移入其他位置。
语法:
#修改文件名称
$ mv a.txt b.txt
#将文件移动到目标目录
$ mv a.txt /logs
#将一个目录下的所有文件和目录移动到当前目录下
$ mv /test/* .
#将文件移动到目标目录并指定新文件名
$ mv /test/a.txt /test/a/b.txt
#将多个文件同时移动到一个指定目录下
$ mv a.txt b.txt c.txt -t /test
N
netstat
#显示整个Linux系统的网络情况
#显示详细的网络状况
netstat -a
#过滤端口
netstat -apn | grep 8080
O
P
pwd
用途:pwd(print working directory)需要知道当前所在位置时,使用pwd来显示当前目录在文件系统内的完整路径
语法:
pwd [选项]
Q
R
rm
-r:向下递归,不管有多少级目录,一并删除;
-f:直接强行删除,不做任何提示
清空文件夹不删除文件夹(test)本身
rm -rf /test/*
rpm
用途:redhat package manager用于管理陶健,使Linux易于安装,升级,类似于Windows里面的”添加/删除程序“。
语法:
#查询程序是否安装,-q:使用询问模式,遇到任何问题,rpm会先询问用户
$ rpm -q mysql
#按照路径安装并显示进度:-i:显示套件的相关信息,-v:显示指令的执行过程,-h:套件安装时列出的标记
$ rpm -ivh /a/b/c/d.rpm
#指定安装目录
$ rpm -ivh --relocate /=/a/b d.rpm
#检查依赖关系
$ rpm -ivh --test d.rpm
#搜索指定rpm包是否安装 -a:搜索*httpd*(*代表通配符)
$ rpm -qa|grep httpd
#搜索rpm包 -l:列出所有文件安装目录
$ rpm -ql httpd
#删除一个rpm包
$ rpm -e d.rpm
S
scp
Linux系统之间文件复制
scp [参数] [原路径] [目标路径]
参数说明
-r:递归复制整个目录
scp 文件名 用户名@虚拟机ip地址:目标路径
$ scp -r kafka_2.11-0.10.0.0 bigdata-pro01.bigDAta.com:/opt/modules/
sed
source
可以重载配置文件或执行shell脚本
当对配置文件做了修改不需要重启,只需要用source重载一下被修改的配置文件即可
sudo
用途: 经由 sudo 所执行的指令就好像是 root 亲自执行 。
使用权限:在/etc/sudoers中出现的使用者。
语法:sudo service mysqld start
T
tar
Linux下常见的压缩包格式有5种:zip tar.gz tar.bz2 tar.xz tar.Z
-z: 用gzip来压缩/解压缩文件
-c: 创建新的压缩文件—进行压缩
-x: 解压缩文件或目录—进行解压
-v: 详细报告tar处理的文件信息
-f: 使用文档名
$ tar -zxf kafka_2.11-0.10.0.0.tgz -C /opt/modules/
tail
#查看文件的内容
tail -n 1000 [文件]:显示文件的尾部1000行
tail -n +1000 [文件]:从1000行开始显示,至文件末尾
#常用参数:查阅正在改变的文件,直到您按下Ctrl+C组合键停止显示
tail -f [文件]
touch
- 更新文件的访问和修改时间
U
V
W
which
用途:在环境变量$PATH设置的目录里查找符合条件的文件。
语法:which [文件...]
- -n<文件名长度> 指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
- -p<文件名长度> 与-n参数相同,但此处的<文件名长度>包括了文件的路径。
- -w 指定输出时栏位的宽度。
- -V 显示版本信息。
X
Y
Z
其他
更换JDK版本
问题描述:
在/etc/profile文件中,已经设置JAVA_HOME,且已经使用过source命令了,但是使用java -version
查询的时候,版本仍然是1.7的。
<!--/etc/profile-->
#JAVA_HOME
export JAVA_HOME=/opt/modules/jdk1.8.0_191
export PATH=$PATH:$JAVA_HOME/bin
$ java -version
java version "1.7.0_251"
OpenJDK Runtime Environment (rhel-2.6.21.0.el6_10-x86_64 u251-b02)
OpenJDK 64-Bit Server VM (build 24.251-b02, mixed mode)
解决过程:
#使用which命令找到java所在的位置
$ which java
/usr/bin/java
#删除/usr/bin/java文件
$ sudo rm /usr/bin/java
#执行source
$ source /etc/profile
#执行java -version
$ java -version
$ java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
NTP设置集群内机器时间同步
为什么要时间同步?
如果集群中时间相差很大,会出现很多无法解决的问题;几乎所有的集群软件,工作的一个前提条件就是时间是同步的;而业务系统中,常常会记录时间戳,如果集群不同步,这些记录就是脏数据。
相关知识:
#查看或设置当前系统的时间
date
# 按照指定格式显示日期时间
date '+%Y-%m-%d %H:%M:%S'
#手工临时同步系统时间
ntpdate
#作为守护进程,按照一定的算法进行时间同步,即使你启动了该进程,ntpd也不会立刻进行时间同步
ntpd
#修改默认时区
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ntp相关操作:
#查看ntp状态
$ sudo service ntpd status
ntpd (pid 1565) is running...
#关闭ntp
$ sudo service ntpd stop
Shutting down ntpd: [ OK ]
#启动ntp
$ sudo service ntpd start
Starting ntpd: [ OK ]
#重启ntp
$ sudo service ntpd restart
#查看ntp位置
$ which ntpdate
/usr/sbin/ntpdate
#检查ntp端口是否已经开启
#netstat -unlnp | grep ntpd
#查看网络中的NTP服务器,显示客户端和每个服务器的关系
#ntpq -p
#查看时间服务器的ntp服务状态:服务启动后需要等5-10分钟才能看到正常信息
#ntpstat
选择集群内一台机器作为时间服务器,其他机器从该时间服务器更新时间,同时时间服务器向外网时间服务器同步时间。
查看ntp服务是否已经存在,若不存在,给所有需要同步时间的服务器安装ntp服务
yum install ntp -y
;$ sudo rpm -qa|grep ntp fontpackages-filesystem-1.41-1.1.el6.noarch ntpdate-4.2.4p8-3.el6.centos.x86_64 ntp-4.2.4p8-3.el6.centos.x86_64
所有需要同步的机器(包括选择的时间服务器)设置ntp开机自启动,但不需要启动服务
$ sudo chkconfig ntpd on
时间服务器配置
- 修改时间服务器的配置文件/etc/ntp.conf
$ vi /etc/ntp.conf #ntp.conf #释放注释,允许192.168.1.0-192.168.1.255网段的机器同步此服务器 restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap #注释掉默认的外网时间服务器 server 0.centos.pool.ntp.org iburst server 1.centos.pool.ntp.org iburst server 2.centos.pool.ntp.org iburst server 3.centos.pool.ntp.org iburst # 添加中国国家授时中心服务器地址 server 0.cn.pool.ntp.org server 1.cn.pool.ntp.org server 2.cn.pool.ntp.org server 3.cn.pool.ntp.org # 添加允许上层时间服务器主动修改本机时间 restrict 0.cn.pool.ntp.org nomodify notrap noquery restrict 1.cn.pool.ntp.org nomodify notrap noquery restrict 2.cn.pool.ntp.org nomodify notrap noquery restrict 3.cn.pool.ntp.org nomodify notrap noquery #释放注释 外部时间服务器不可用时,以本地时间作为时间服务 server 127.127.1.0 #local clock fudge 127.127.1.0 stratum 10 #把系统时间写入主板,这样,即使服务器关机或断电,时间也会更新 SYNC_HWCLOCK=yes
- 在启动ntpd服务之前,修改时间服务器时间
当中国国家授时中心服务器与时间服务器之间的时间误差过大时(可能是1000秒),时间服务器去同步时间可能对系统和应用带来不可预知的问题,时间服务器将停止时间同步!所以如果发现时间服务器启动之后时间并不进行同步时,应该考虑到可能是时间差过大引起的,此时需要先手动进行时间同步!
#设置当前日期 $ sudo date -s 1995-11-22 #设置当前时间 $ sudo date -s 20:50:30 # date -s "1995-11-22 20:50:30"
- 启动时间服务器的ntpd服务
配置集群内其他机器向时间服务器同步时间
修改配置文件
# 默认的服务器列表注释掉 # server 0.centos.pool.ntp.org iburst # server 1.centos.pool.ntp.org iburst # server 2.centos.pool.ntp.org iburst # server 3.centos.pool.ntp.org iburst # 从node01中同步时间 server 时间服务器主机名或ip # 允许时间服务器修改本地时间 restrict 时间服务器主机名或ip nomodify notrap noquery # 如果时间服务器不可用,用本地的时间服务 server 127.127.1.0 fudge 127.127.1.0 stratum 10 # 同步时间后写到硬件中 SYNC_HWCLOCK=yes
每台机器在启动ntpd服务之前,手动同步时间(
#ntpstat
在时间服务器服务状态正常的前提下)#ntpdate -u 时间服务器主机名或ip
启动每台机器的ntpd服务
等待5-10分钟后,查看每台机器的状态(
#ntpq -p
或ntpstat
)
定时同步主服务器时间
#root用户下 crontab -e #每隔十分钟从 时间服务器同步一次 */10 * * * * /usr/sbin/ntpdate 时间服务器主机名
更换本地yum源
将本地yum源改成国内阿里源:
1.备份本地源:sudo mv CentOS-Base.repo CentOS-Base.repo.backup
2.下载新的CentOS-Base.repo到/etc/yum.repos.d/
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
或者将下载的Centos-6.repo的内容复制到CentOS-Base.repo文件中
3.在虚拟机下先修改网络:右击两个小电脑处,选择Edit Connections
,在弹出的Network Connections
下修改System eth0
,在弹出的Editing System eth0
上修改IPv4 Settings
将Method
修改为Automatic(DHCP)
4.生成缓存:yum clean all
,yum makecache
。
使用wget命令遇到如下问题:
http://mirrors.aliyun.com/repo/Centos-6.repo
Resolving mirrors.aliyun.com... failed: Temporary failure in name resolution.
wget: unable to resolve host address “mirrors.aliyun.com”
文件系统的原理
inode:
一个文件占用一个inode
,记录文件的属性,同时记录此文件的内容所在的block编号;建立一个目录
时,会分配一个inode与至少一个block
。block记录的内容是目录下所有文件的inode编号以及文件名。每个inode大小均固定为128bytes(新的ext4与xfs可设定到256bytes)
inode具体包含以下信息:
权限(read/write/excute)/拥有者与群组(owner/group)/容量/建立或状态修改的时间(ctime)/最近一次的读时间(atime)/最近修改的时间(mtime)/定义文件特性的旗标(flag,SetUID)/文件真正内容的指向(pointer);
block:
记录文件的内容,文件太大时,会占用多个block