重学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行
/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
7set 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
9dos2unix -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
oriconv -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
主备时间同步
主备均从标准时间服务同步时间到本机
使用
ntpdate
手动做好机器时间同步添加定时任务
crontab -e
设置好需要同步的指令
crontab -l
查看定时任务。 tail -f /var/log/cron
查看crontab执行日志。也可以简单的在主、备机器上同时使用crontab 定时任务,从标准时间服务同步时间*/2 * * * * /usr/sbin/ntpdate -u ntp.api.bz
主服务器从标准同步时间,备服务器从主服务器同步时间
修改
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
531. 关于权限设定部分
权限的设定主要以 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服务器同步一次,根据每次同步时测得的误差值经复杂计算逐步调整自己的时间,随着误差减小,逐步增加同步的间隔。每次跳动,都会重复这个调整的过程。
启动ntpd服务
/etc/init.d/ntpd start
查看启动情况
netstat -ln |grep :123
确认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此时,备服务器就可以同此机器进行时间同步(可以手动
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
3systemctl enable ntpd # 启用ntpd
systemctl enable ntpdate # 启用ntpdate
systemctl is-enabled ntpd # 检查ntpd是否启用启动ntp服务器
1
2systemctl 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
时区的一些概念
- GMT(Greenwich Mean Time,格林威治标准时间): 是指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。
- UTC(Universal Time/Temps Cordonné 世界标准时间)
- CST(Central Standard Time 國家標準時間,一說中原標準時間); 中国标准时间(China Standard Time)
- GMT + 8 = UTC + 8 = CST
- 时区配置指令
tzselect
按照提示一步一步选择你需要的时区。
查看内核日志
日志记录位置为/var/log/messages
,Java进程奔溃无明确错误日志时,可以到这里查查原因