Linux常用命令
1. Vim
:q 退出
:q! 强制退出
:wq 保存并退出
:set num 显示行号
:set nonumber 隐藏行号
全部复制粘贴键方法:
ggVG 全部选中
gg 到文件头
V 行visual模式
G 到文件尾
yyp 复制光标所在行,并粘贴
v+ 移动光标可以选中文本。
y 可以复制已经选中的文本
p 可以粘贴
yy 复制一行则
y$ 复制当前光标所在的位置到行尾
y^ 复制当前光标所在的位置到行首
3yy 复制三行则:即从当前光标+下两行
剪切文本:
用v选中文本之后可以按y进行复制,如果按d就表示剪切,之后按p进行粘贴
dd 剪切一行
d$ 剪切当前行光标所在的位置到行尾
d^ 剪切当前行光标所在的位置到行首
3dd 前切三行:即从当前行+下两行被剪切了
全在vim中查找方法:
选按 /输入 关键字(如: /fooher.com) 在文档中查找字符fooher.com,按n跳到下一个,shift+n上一个
h(左移一个字符←)、j(下一行↓)、k(上一行↑)、l(右移一个字符→)
1,10s/^/#/g 在1行到10行前加#号
1,10s/#/^/g 在1行到10前取消#号
1,10>> 把10行向右移动两个tab
1,10<< 把10行向左移动两个tab
1,10d 把1到10行删除
4,8s/#g 把4到8行#替换成 //
定位命令-vim移动到指定字符
h、 方向左键 左移一个字符
j、 方向下键 下移一行字符
k、 方向上键 上移一行字符
l、 方向右键 右移一个字符
$ 移至行尾
0 移至行首
10h 向左 移动 10
10j 向下 移动 10
10k 向上 移动 10
10l 向右 移动 10
H 移至屏幕上端
M 移至屏幕中央
L 移至屏幕下端
( (左小括号)移动到上一个句子首
) (右小括号)移动到下一个句子首
{ (左大括号)移动到上一个段落首
} (右大括号)移动到下一个段落首
Ctrl + e 向下滚动一行
Ctrl + y 向上滚动一行
Ctrl + d 向下滚动半屏
Ctrl + u 向上滚动半屏
Ctrl + f 向下滚动一屏
Ctrl + b 向上滚动一屏
2. SFTP
# 连接到另一台服务器
root@master tmp]# sftp root@192.168.100.22
# 直接使用命令会操作远程服务器,可以使用l+命令的方式操作本地文件,如lcd,lls等
3. Zip
分卷压缩
# 1. 先把源文件压缩成zip
zip -r b.zip a.html
# 2. 根据情况分卷 --4g
zip -s 4g b.zip --out c.zip
---
# 分卷解压
# 3. 合并文件
cat c.zip.* > d.zip
# 4. 解压
unzip d.zip
中文乱码问题
unzip -O GBK *.zip
批量解压缩
find . -name '*.zip' -exec unzip -O GBK {} \;
# 同理对文件执行批量命令,如tar
find . -name '*.tar.gz' -exec tar -zxvf {} \;
4. ip地址配置
vim /etc/sysconfig/network-scripts/ifcfg-eno1
BOOTROTO=static # 配置静态ip
ONBOOT=yes # 使用此网卡
IPADDR="10.25.11.11"
PREFIX="24"
GATEWAY="10.25.11.1"
# 重启网卡服务
service network restart
5. 修改hostname
hostnamectl set-hostname your-names
# 重启hostname 生效
systemctl restart systemd-hostnamed.service
6. 用户操作
# 新增用户
useradd [-d home] [-s shell] [-c comment] [-m [-k template]] [-f inactive] [-e expire ] [-p passwd] [-r] name
7. 配置sudo
vim /etc/sudoer
8. rpm 命令
rpm -ivh xxx.rpm //安装rpm
rpm -Uvh xxx.rpm //升级rpm
rpm -e xxx.rpm //删除rpm
rpm -qi xxx.rpm //查看安装包的信息
rpm -ql xxx.rpm //查看安装包内文件的绝对路径
rpm -qf xxx.rpm //查看文件属于哪一个rpm安装包
rpm -qa xxx.rpm //显示所有安装的rpm包
rpm -qilp xxx.rpm //列出一个未被安装进系统的RPM包文件中包含有哪些文件
#特殊参数
--force //即使覆盖属于其它包的文件也强迫安装
--nodeps //如果该RPM包的安装依赖其它包,即使其它包没装,也强迫安装。
9. Yum
# yum安装nginx,先添加ngixnyum资源库
[root@VM-4-16-centos ~]# rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# 查看yum仓库可用nginx版本
[root@VM-4-16-centos ~]# yum --showduplicates list nginx
# 执行安装
[root@VM-4-16-centos ~]# yum install -y nginx
# 卸载
[root@VM-4-16-centos ~]# yum remove -y nginx
yumdownloader下载离线资源
# 安装yum-utils
[root@VM-4-16-centos ~]# yum install -y yum-utils
# 执行下载,--destdir指定下载包存放位置
[root@VM-4-16-centos ~]# yumdownloader --resolve --destdir /data nginx
10. 系统资源查看
top:
实时查看进程的状态,可以看到总体的系统运行状态cpu、内存等
top - 10:56:15 up 11 days, 15:01, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 391 total, 1 running, 390 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 65787000 total, 63921300 free, 935568 used, 930132 buff/cache
KiB Swap: 8257532 total, 8257532 free, 0 used. 64088748 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 193308 6292 2544 S 0.3 0.0 4:40.39 systemd
1055 root 20 0 115816 1396 684 S 0.3 0.0 0:31.70 ksmtuned
2178 gdm 20 0 725616 18192 8920 S 0.3 0.0 16:23.20 gsd-color
146222 root 20 0 162236 2540 1528 R 0.3 0.0 0:00.05 top
2 root 20 0 0 0 0 S 0.0 0.0 0:00.40 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.02 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root rt 0 0 0 0 S 0.0 0.0 0:00.02 migration/0
11. 磁盘挂载
11.1 硬盘空间大于2T
查看磁盘空间
[root@k8s-main1 /]# fdisk -l
磁盘 /dev/vda:536.9 GB, 536870912000 字节,1048576000 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000b803a
设备 Boot Start End Blocks Id System
/dev/vda1 * 2048 2099199 1048576 83 Linux
/dev/vda2 2099200 209715199 103808000 8e Linux LVM
磁盘 /dev/vdb:2199.0 GB, 2199023255552 字节,4294967296 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
使用parted 设置分区
[root@k8s-main1 /]# parted /dev/vdb
GNU Parted 3.1
使用 /dev/vdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt
(parted) mkpart primary xfs 0% 100%
(parted) print
Model: Virtio Block Device (virtblk)
Disk /dev/vdb: 2199GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志
1 1049kB 2199GB 2199GB primary
(parted) quit
[root@k8s-main1 /]# fdisk -l
磁盘 /dev/vda:536.9 GB, 536870912000 字节,1048576000 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000b803a
设备 Boot Start End Blocks Id System
/dev/vda1 * 2048 2099199 1048576 83 Linux
/dev/vda2 2099200 209715199 103808000 8e Linux LVM
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
磁盘 /dev/vdb:2199.0 GB, 2199023255552 字节,4294967296 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: 7FE01718-24DD-4B1A-B3A5-D507BF55BBE2
# Start End Size Type Name
1 2048 4294965247 2T Microsoft basic primary
格式化磁盘
[root@k8s-main1 /]# mkfs.ext4 /dev/vdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
134217728 inodes, 536870400 blocks
26843520 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2684354560
16384 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848, 512000000
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
挂载磁盘
[root@k8s-main1 /]# mkdir /data
[root@k8s-main1 /]# mount /dev/vdb1 /data
设置自动挂载
[root@k8s-main1 /]# vim /etc/fstab
# 追加挂载点
/dev/vdb1 /data ext4 defaults 0 0
12. 使用crontab定时任务执行shell脚本
编写测试脚本
[root@localhost iportal_bak]# vim back_db.sh
# 本脚本以supermap iportal文件型数据库备份脚本为例
DATA=$(date +%F_%H-%M-%S)
BACK_UP_DIR=/data/iportal_bak
BACK_DIR=/data/supermap-iportal-10.2.1-linux64/webapps/iportal/WEB-INF
# 按时间创建文件夹
DATE_DIR=$BACK_UP_DIR/$DATA
mkdir -p $DATE_DIR
# 对需要 备份的文件进行备份
cp $BACK_DIR/iserver-security.db $DATE_DIR
cp -r $BACK_DIR/iportaldata $DATE_DIR
# 删除一个月前的数据, +30 表示删除30天以前的数据
find $BACK_UP_DIR -mtime +30 -type d | xargs rm -rf {} \
赋予脚本权限
[root@localhost iportal_bak]# chmod 777 back_db.sh
编写crontab规则
# 使用crontab -e 命令修改定时规则
[root@localhost iportal_bak]# crontab -e
# 增加定时规则,该规则表示每天0时0分执行一次备份脚本
0 0 * * * /data/iportal_bak/back_db.sh
# 编写规则解释如下:
# minute: 表示分钟,可以是从0到59之间的任何整数。
# hour:表示小时,可以是从0到23之间的任何整数。
# day:表示日期,可以是从1到31之间的任何整数。
# month:表示月份,可以是从1到12之间的任何整数。
# week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
# command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
# 星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作
# 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
# 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
# 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
查看定时任务已有规则
[root@localhost iportal_bak]# crontab -l
*/5 * * * * bash /root/usage/get_usage.sh
0 0 * * * /data/iportal_bak/back_db.sh
查看定时任务执行日志
# crontab日志存储在/var/log/cron 文件下
[root@localhost iportal_bak]# tail -f /var/log/cron
Apr 23 17:20:39 localhost CROND[73388]: (root) CMDOUT ( 7 root rt 0 0 0 0 S 0.0 0.0 0:40.81 [migratio+)
Apr 23 17:20:39 localhost CROND[73388]: (root) CMDOUT ( 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 [rcu_bh])
Apr 23 17:20:39 localhost CROND[73388]: (root) CMDOUT ( 9 root 20 0 0 0 0 S 0.0 0.0 25:11.81 [rcu_sche+)
Apr 23 17:20:39 localhost CROND[73388]: (root) CMDOUT ( 10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 [lru-add-+)
Apr 23 17:20:39 localhost CROND[73388]: (root) CMDOUT ( 11 root rt 0 0 0 0 S 0.0 0.0 0:16.58 [watchdog+)
Apr 23 17:20:39 localhost CROND[73388]: (root) CMDOUT ( 12 root rt 0 0 0 0 S 0.0 0.0 0:20.72 [watchdog+)
Apr 23 17:20:39 localhost CROND[73388]: (root) CMDOUT ( 13 root rt 0 0 0 0 S 0.0 0.0 0:55.11 [migratio+)
Apr 23 17:20:39 localhost CROND[73388]: (root) CMDOUT ( 14 root 20 0 0 0 0 S 0.0 0.0 0:00.97 [ksoftirq+)
Apr 23 17:20:39 localhost CROND[73388]: (root) CMDOUT (20230423-17:20:39 99.3)
Apr 23 17:20:39 localhost CROND[73388]: (root) CMDOUT (20230423-17:20:39 32759044 560624
13. 后台运行命令
使用xshell终端操作linux系统时,对于长时间运行的命令或者网络波动比较大的情况,终端会收到HUP(hangup)信号而关闭所有子进程。因此需要忽略HUP信号或者让进程在后台运行。
1. nohup 命令
nohup命令可以让提交的命令忽略 hangup 信号,命令形式为:
# nohup command
nohup tar -zcvf test.tar.gz ./*
2. disown命令
如果已经在终端执行了命令,可以先挂起命令然后后端运行,再使用 disown命令使进程运行在新的会话里
# ctrl + z 挂起命令
^Z
[1]+ Stopped tar -zcvf data.tar.gz ./*
# 使用bg %n命令后台运行
root@gis:/data# bg %1
[1]+ tar -zcvf data.tar.gz ./* &
# 查看任务
root@gis:/data# jobs
[1]+ Running tar -zcvf data.tar.gz ./* &
# 使用 disown命令使进程运行在新的会话里
root@gis:/data# disown -h %1
# 退出终端
root@gis:/data# exit
# 检查任务是否执行
root@gis:/data# top
38860 root 20 0 50552 24524 2884 D 1.7 0.1 9:08.52 tar