Linux


[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 -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 -pntpstat

  • 定时同步主服务器时间

    #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 SettingsMethod修改为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


Manba_girl: Mamba_girl
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source Mamba_girl !
  目录