随笔记

平凡人平凡路,沉下心迈出步

0%

一步一步学习Linux

重学Linux

vim 常用快捷键

  • h ← 光标左移一个字符
  • j ↓ 光标下移一个字符
  • k ↑ 光标上移一个字符
  • l → 光标右移一个字符
  • ctrl+f 屏幕向下移动一页 [Page Down]效果
  • ctrl+b 屏幕向上移动一页 [Page Up]效果
  • ctrl+d 屏幕向上移动半页
  • ctrl+u 屏幕向上移动半页
  • 0 移动到这一行的最前面字符处
  • $ 移动到这一行的最后面字符处
  • H 光标移动到屏幕的最上方那一行的第一个字符
  • M 光标移动到屏幕的中央那一行的第一个字符
  • L 光标移动到屏幕的最下方那一行的第一个字符
  • G 光标移动到这个文件的最后一行的第一个字符
  • nG n为数字。移动到这个文件的第n行。例如:20G表示移动到20行
  • gg 移动到文件的第一行或者:1
  • shift+g移动到文件的最后一行或者:$
  • N[Enter] n为数字。光标向下移动n行

  • yy 复制光标所在行,nyy 复制光标所在往后的n行

  • p 粘贴复制的数据


  • /word 向下寻找一个名称为word的字符串。
  • ?word 向上寻找一个名称为word的字符串。
  • n 重复前一个查找的操作
  • N “反向”进行前一个查找的操作
  • :n1,n2s/word1/word2/g n1,n2为数字。在第n1与n2行之间寻找word1这个字符串,并将该字符串替换为word2
  • :1,$s/word1/word2/g 从第一行到最后一行行之间寻找word1这个字符串,并将该字符串替换为word2
  • :1,$s/word1/word2/gc 从第一行到最后一行行之间寻找word1这个字符串,并将该字符串替换为word2。且在替换前显示提示符给用户确认是否替换

  • x,X 在一行字当中,x为向后删除[Del]一个字符,X为向前删除[Backspace]一个字符
  • nx n为数字,连续向后删除n个字符 nX 连续向前删除n个字符
  • dd 删除光标所在整行 ndd 删除光标所在向下n行
  • d1G 删除光标所在到第一行的所有数据 dG 删除光标所在到最后一行的所有数据
  • d$ 删除光标所在处到该行的最后一个字符 d0 删除光标所在处到该行最前面一个字符

  • u 复原前一个操作
  • Ctrl+r 重做上一个操作

  • .vimrc 配置内容
    1
    2
    3
    4
    5
    6
    7
    set hlsearch
    set ruler
    set showmode
    set nu
    set bg=dark

    syntax on

Linux中的Chmod命令

chmod代表更改模式。此命令用于更改访问方式。

chmod命令具有以下语法:

chmod [选项]模式文件

在了解如何使用chmod之前,您应该了解其选项。

-v:为每个处理的文件输出诊断

-c:类似详细信息,但仅在进行更改时报告

–reference = FILE:使用FILE的模式而不是MODE值

–R:递归更改权限

  • 举几个比较明显的例子

递归更改目录中所有文件的权限

chmod具有递归选项,允许您更改目录及其子目录中所有文件的权限。

chmod -R 755 directory

chmod + x或``chmod a + x`:每个人都可以执行

chmod最常用的情况之一是为文件提供执行位。通常,下载可执行文件后,您需要先添加此权限,然后才能使用它。授予所有者,组和其他所有人执行文件的权限:

chmod +x /path/to/file

chmod 755:只有所有者才能为所有人编写,阅读和执行

下一个命令将对文件rwxr-xr-x设置以下权限。仅所有者可以被允许写入文件。所有者,组成员和其他所有人均具有读取和执行权限。

chmod 755 /path/to/file

基本操作

安全设置

性能调优

脚本编写

常见问题

  • linux 、windos 文件换行符转换sudo yum install dos2unix -y

    1
    2
    3
    4
    5
    6
    7
    8
    9
    dos2unix -k test.txt
    unix2dos -k test.txt

    -k:保持输出文件的日期不变
    -q:安静模式,不提示任何警告信息。
    -V:查看版本
    -c:转换模式,模式有:ASCII, 7bit, ISO, Mac, 默认是:ASCII。
    -o:写入到源文件
    -n:写入到新文件
  • 查看文件编码信息 file test.txt test.txt: UTF-8 Unicode text

  • 转换文件编码 iconv, iconv -f UTF-8 -t GBK test.txt -o test.gbk.txt or iconv -f utf-8 -t gb2312 aaa.txt >bbb.txt字符集转换

  • 使用awk命令查看文件大小ls -l |awk 'BEGIN {size=0;print "[start]size is ", size} {if($5!=4096){size=size+$5;}} END{print "[end]size is ", size/1024/1024,"M"}' ,过滤显示文本ps -ef | grep java| awk '{print $2"\t"$12}'

机器时间同步

  • 查看硬件时间 hwclock --show

  • 查看系统时间 date

  • 同步真实时间到系统 ntpdate -u ntp.api.bz

    1
    2
    3
    [root@node1 ~]# ntpdate [NTP IP/hostname]
    [root@node1 ~]# ntpdate 192.168.0.1
    [root@node1 ~]# ntpdate -u ntp.api.bz
  • 以系统时间为基准,修改硬件时间hwclock -w,以硬件时间为基准,修改系统时间hwclock -s

主备时间同步

主备均从标准时间服务同步时间到本机

  1. 使用ntpdate手动做好机器时间同步

  2. 添加定时任务crontab -e设置好需要同步的指令

crontab -l 查看定时任务。 tail -f /var/log/cron 查看crontab执行日志。也可以简单的在主、备机器上同时使用crontab 定时任务,从标准时间服务同步时间*/2 * * * * /usr/sbin/ntpdate -u ntp.api.bz

主服务器从标准同步时间,备服务器从主服务器同步时间

  1. 修改ntpd服务配置 vi /etc/ntp.conf ,内容如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    # 1. 关于权限设定部分 
    #  权限的设定主要以 restrict 这个参数来设定,主要的语法为:
    #   restrict IP mask netmask_IP parameter
    #   其中 IP 可以是软件地址,也可以是 default ,default 就类似 0.0.0.0
    #  至于 paramter 则有:
    #   ignore :关闭所有的 NTP 联机服务
    #   nomodify:表示 Client 端不能更改 Server 端的时间参数,不过Client 端仍然可以透过 Server 端来进行网络校时。

    #   notrust :该 Client 除非通过认证,否则该 Client 来源将被视为不信任网域
    #   noquery :不提供 Client 端的时间查询

    #   notrap :不提供trap这个远程事件登入

    #  如果 paramter 完全没有设定,那就表示该 IP (或网域)"没有任何限制"

    restrict default nomodify notrap noquery # 关闭所有的 NTP 要求封包

    restrict 127.0.0.1    #这是允许本机查询

    restrict 192.168.0.1 mask 255.255.255.0 nomodify

    #在192.168.0.1/24网段内的服务器就可以通过这台NTP Server进行时间同步了
    # 2. 上层主机的设定
    #  要设定上层主机主要以 server 这个参数来设定,语法为:
    #  server [IP|HOST Name] [prefer]
    #  Server 后面接的就是上层 Time Server,而如果 Server 参数

    # 后面加上 perfer 的话,那表示我们的 NTP 主机主要以该部主机来

    # 作为时间校正的对应。另外,为了解决更新时间封包的传送延迟动作,

    #  所以可以使用 driftfile 来规定我们的主机
    #  在与 Time Server 沟通时所花费的时间,可以记录在 driftfile
    #  后面接的文件内,例如下面的范例中,我们的 NTP server 与
    #  cn.pool.ntp.org联机时所花费的时间会记录在 /etc/ntp/drift文件内
    server 0.pool.ntp.org

    server 1.pool.ntp.org

    server 2.pool.ntp.org

    server cn.pool.ntp.org prefer

    #其他设置值,以系统默认值即可

    server 127.127.1.0 # local clock

    fudge 127.127.1.0 stratum 10

    driftfile /var/lib/ntp/drift
    broadcastdelay 0.008

    keys /etc/ntp/keys

    使用ntpd服务,要好于ntpdate加cron的组合。因为,ntpdate同步时间会造成时间的突变和跳跃,对一些依赖时间的程序和服务会造成影响。比如sleep,timer等。而且ntpd服务可以在修正时间的同时,修正CPU Tick。因此理想的做法为,在开机的时候,使用ntpdate强制同步时间,在其他时候使用ntpd服务来同步时间。要注意的是,ntpd 有一个自我保护的机制:如果本机与上源时间相差太大,ntpd 不会运行时间同步操作,所以新设置的时间服务器一定要先 ntpdate 从上源取得时间初值, 然后启动 ntpd服务。ntpd服务运行后,先是每64秒与上源NTP服务器同步一次,根据每次同步时测得的误差值经复杂计算逐步调整自己的时间,随着误差减小,逐步增加同步的间隔。每次跳动,都会重复这个调整的过程。

  2. 启动ntpd服务/etc/init.d/ntpd start

  3. 查看启动情况netstat -ln |grep :123

  4. 确认ntp服务已启用 ntpstat

    1
    2
    3
    4
    [root@zft2084 ~]# ntpstat
    synchronised to local net (127.127.1.0) at stratum 11
    time correct to within 1950 ms
    polling server every 64 s
  5. 此时,备服务器就可以同此机器进行时间同步(可以手动ntpdate也可crontab 定时同步)

ntp 服务相关问题

  • 检查服务是否存在systemctl list-unit-files --type=service | grep ntp 查看ntpdate.service ntpd.service

  • 如果出现命令不可用,则需要查看是否安装ntp服务rpm -q ntp,安装yum install ntpdate ntp -y

  • 设置ntp系统开机自启动:

    1
    2
    3
    systemctl enable ntpd # 启用ntpd
    systemctl enable ntpdate # 启用ntpdate
    systemctl is-enabled ntpd # 检查ntpd是否启用
  • 启动ntp服务器

    1
    2
    systemctl start ntpdate
    systemctl start ntpd
  • 查看ntp状态ntpq -p ,输出内容如下

    1
    2
    3
    4
    5
    6
    7
    [root@zft2084 ~]# ntpq -p
    remote refid st t when poll reach delay offset jitter
    ==============================================================================
    time.cloudflare .INIT. 16 u - 64 0 0.000 0.000 0.000
    ntp.xtom.nl 194.80.204.184 2 u 30 64 1 193.569 -0.037 0.000
    tick.ntp.infoma .GPS. 1 u 29 64 1 248.769 3.490 0.000
    *LOCAL(0) .LOCL. 10 l 34 64 1 0.000 0.000 0.000

时区的一些概念

  1. GMT(Greenwich Mean Time,格林威治标准时间): 是指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。
  2. UTC(Universal Time/Temps Cordonné 世界标准时间)
  3. CST(Central Standard Time 國家標準時間,一說中原標準時間); 中国标准时间(China Standard Time)
  4. GMT + 8 = UTC + 8 = CST
  • 时区配置指令 tzselect 按照提示一步一步选择你需要的时区。

查看内核日志

日志记录位置为/var/log/messages,Java进程奔溃无明确错误日志时,可以到这里查查原因