Linux基础知识系列之四

1,286 阅读6分钟

vi(文本编辑)

常规流程是vi xxx 进入命令行模式--> 按i进入编辑 --> 按esc退出编辑,按shift+:进入命令行模式 --> 输入wq保存。但是文件内容一旦过多,这种模式就不太好用了,接下来介绍一些在命令行的快捷方式来进行快速编辑。

  1. 快速删除 dd --> 删除当前行 dG --> 删除当前行以及以下的所有行 ndd --> 删除当前行以及以下的n-1行
  2. 快速跳转 gg --> 跳转到第一行的首字母 G --> 跳转到最后一行的首字母 shift+$ --> 跳转当前行的行未 0 --> 跳转当前行的行首
  3. 设置行号或者取消 set nu set nonu
  4. 搜索 命令行模式输入/xxx,按n向下,N向上
  5. 快速清空文件内容 gg+dG --> 这种方式只适合不太大的文件,保存之后该文件的字节为0 cat /dev/null > xxx --> 这种也是使得文件字节为0 echo '' > xxx --> 伪清空,文件字节会变为1
[root@hadoop001 ~]# ll
total 4
-rw-r--r-- 1 root root 46 Jun 23 11:49 tail.log
[root@hadoop001 ~]# echo '' > tail.log 
[root@hadoop001 ~]# ll
total 4
-rw-r--r-- 1 root root 1 Jun 23 11:50 tail.log   <-- 伪清空

[root@hadoop001 ~]# ll
total 4
-rw-r--r-- 1 root root 46 Jun 23 11:52 tail.log
[root@hadoop001 ~]# cat /dev/null > tail.log 
[root@hadoop001 ~]# ll
total 0
-rw-r--r-- 1 root root 0 Jun 23 11:52 tail.log   <-- 真正清空

软链接

命令为ln -s 源文件路径 软链接所在路径,这个命令在实际上使用频率不太高,但是会有以下两个场景会用到。 第一个场景,比如你的代码中使用的是/xxx/ruozedatav1.0路径,但是某天需要升级要使用的路径变成了/xxx/ruozedatav2.0。你不可能会去改代码中的路径,所以这个时候就需要软链接。以下方式创建软链接,就可以避免改代码里的路径。

[root@hadoop001 ~]# ln -s /root/ruozedatav1.0/ /root/rz
[root@hadoop001 ~]# ll
lrwxrwxrwx 1 root root 20 Jun 23 12:28 rz -> /root/ruozedatav1.0/
[root@hadoop001 ~]# rm -rf rz
[root@hadoop001 ~]# ln -s /usr/local/ruozedatav2.0/ /root/rz
[root@hadoop001 ~]# ll
lrwxrwxrwx 1 root root 25 Jun 23 12:29 rz -> /usr/local/ruozedatav2.0/

第二个场景就是,当你代码中使用的路径磁盘快满了,需要更换到另一个容量较大的磁盘路径时。当然要注意权限与之前一致。

[root@hadoop001 ~]# mv /data01/ruozedata /data02/ruozedata
[root@hadoop001 ~]# ln -s /data02/ruozedata /data01/ruozedata
[root@hadoop001 data01]# ll
lrwxrwxrwx 1 root root 25 Jun 23 12:29 ruozedata -> /data02/ruozedata

权限

主要涉及到两个命令:chmod和chown。chmod是改变文件读写执行权限,chown是改变文件所属用户和用户组。这两个组成文件的权限体系,查看文件权限需要两者结合来看。

drwxr-xr-x. 2 root root      4096 Jun 12 22:41 Downloads
-rw-r--r--. 1 root root      1012 Jun 15 21:46 error.log
第一位字母: d是文件夹 -是文件 l是连接

命令实例(只有chown和chmod使用-R):
chown -R jepson:jepson ruozedata
chmod -R 777  ruozedata  --> 777 代表所有人都有最大权限 读写执

r 读4
w 写2
x 执行 1 shell脚本
- 0 没有任何权限 

rwx r-x r-x
第一组 rwx 7 代表文件和文件夹所属的 用户的权限: 读写执
第二组 r-x 5 代表文件和文件夹所属的 用户组的权限: 读执
第三组 r-x 5 代表其他组的所有用户对这个文件或文件夹权限: 读执

ps:root账号很特别,上面的权限都没用,即使文件权限是000,权限组是其他用户,它照样读写执行

压缩与解压

tar.gz和zip压缩格式是我们常见的,下面简单介绍两种的格式的压缩和解压命令:

tar -zxvf xxx.tag.gz  --> 解压,加上-C可以指定解压到某个路径
tar -cxvf xxx.tag.gz /xxx/xxx/* --> 压缩

unzip xxx.zip  --> 解压
zip xxx.zip /xx/xx/* --> 压缩

如果你在解压某个之后发现,该文件的用户和用户组不正常,一定要用chown将其改回来,否则之后会造成不可知错误。 如下:

[root@hadoop001 ~]# tar -xzvf jdk-8u45-linux-x64.gz  -C /usr/java/
[root@hadoop001 ~]# cd /usr/java/
[root@hadoop001 java]# ll
total 4
drwxr-xr-x. 8 uucp 143 4096 Apr 11  2015 jdk1.8.0_45     <-- 用户和用户组错误
[root@hadoop001 java]# chown -R root:root  /usr/java/jdk1.8.0_45
[root@hadoop001 java]# ll
total 4
drwxr-xr-x. 8 root root 4096 Apr 11  2015 jdk1.8.0_45

定时任务

Linux中crontab经常用来做定时任务,下面就是常用到命令:

crontab -e 编辑定时任务
格式 * * * * * 分 小时 日 月 周
* 代表每

常见需求:
1. 每两分钟执行
*/2 * * * *

2. 每10秒执行
定时任务执行中以下脚本
[root@hadoop001 tmp]# cat date.sh 
#!/bin/bash

for((i=1;i<=6;i++))
do
	echo "wwww.ruozedata.com"
	date
	sleep 10s
done

exit

后台执行

网上有些说只需在命令后面加上&就是后台执行,但并不是,执行 nohup 命令 & 才是。

[root@hadoop001 ~]# ./date.sh &
[1] 11179
[root@hadoop001 ~]# Sun Jun 23 14:06:33 CST 2019    <--- 还是前台展示
[root@hadoop001 ~]# nohup ./date.sh &
[1] 11136
[root@hadoop001 ~]# nohup: ignoring input and appending output to ‘nohup.out’ <-- 输出放在这里
[root@hadoop001 ~]# cat nohup.out 
Sun Jun 23 14:06:03 CST 2019

因为可能不止一个脚本后台运行,所以不能将输出都放在nohup.out里面,我们更多是将输出重定向。

nohup ./date.sh >> /tmp/date.log 2>&1 & 

其他系统命令

free -m  查看内存使用情况
[root@hadoop001 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:          15885         292       13054         163        2537       15107
Swap:             0           0           0
记得buff/cache都是算作内存一部分哦

df -h 查看磁盘使用情况
[root@hadoop001 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        40G  4.3G   36G  11% /
devtmpfs        7.8G     0  7.8G   0% /dev
tmpfs           7.8G   16K  7.8G   1% /dev/shm
tmpfs           7.8G  164M  7.6G   3% /run
tmpfs           7.8G     0  7.8G   0% /sys/fs/cgroup
tmpfs           1.6G     0  1.6G   0% /run/user/0

top 实时查看整个服务器情况
面板第一行有个load average: 0.00, 0.00, 0.00,这个三个数代表1min,5min,15min服务器的负载。
一般来说三个数在10以下都是比较稳定的。