最近在通过《鸟哥的Linux私房菜》系统得学习linux。可是工作中还是要用Linux的,有些命令啥的就是现学现用,这个笔记就是记录这个的。
常规
| 命令 | 简介 | 备注 |
|---|---|---|
| pwd | 显示当前路径 | |
| mv | 重命名或移动 | -f 强制移动,若有重名文件直接覆盖 |
| cp | 复制(文件名支持通配符) | -r 递归将子文件全部复制 |
| mkdir | 创建文件夹 | -p 递归创建所有需要的目录 |
| /sbin/ifconfig | 获取ip地址 | |
| df -h | 以磁盘分区为单位查看磁盘使用量 | |
| du -sh ./ | 获取当前目录的大小 | |
| du -h ./ | 获取当前目录的下所有文件夹的大小(含子文件夹) | |
| rz/sz | 利用ssh协议在Xshell上传输文件 | |
| netstat | -a:将目前系统上所有的链接、监听、Socket数据都列出来 -t:列出tcp网络数据包的数据 -u:列出udp网络数据包的数据 -n:不列出进程的服务名称,以端口号来显示 -l:列出目前正在网络监听listen的服务 -p:列出该网络服务的进程 PID |
列出目前系统上已在监听的网络连接及其PID:netstat –tlnp netstat -tunlp | grep 8005 |
| 查询linux系统的版本 | 查看电脑和操作系统的信息:uname -a 查询内核版本:cat /proc/version 查询发行版本:cat /etc/issue 查询发行版本:lsb_release -a(适用于所有的linux,包括Redhat、SuSE、Debian等发行版,但是在debian下要安装lsb) |
|
| ps -ef|grep java | 查找“java”相关的进程信息 | |
| ps -ef |grep nginx |awk ‘{print $2}’|xargs kill -9 | 杀死nginx相关的所有进程 | |
| grep -r xixi /home | 显示/home目录下的文件(包含子目录)包含xixi的行(去掉-r则不查子目录) | |
| jar -xvf game.war | 解压game.war包到当前目录 | |
| which python | 查找python的安装路径 | |
| alias vi | 通过alias来查找别名对应的命令 | |
| echo > catalina.out | 清空日志文件 | |
| find /export -size +1000k | 查找指定目录下(默认递归),大小大于1000k的文件 | |
| find /export/ -name ‘log’ | 指定目录下(默认递归),查找名为log的文件,此时支持通配符 | |
| find的两个参数一起用来清理日志 | for i in “find /export/Domains -name ‘*.log’ -size +10000k”; do echo > $i; done | 忘了是不是这么写的了,是双引号包裹的吗?懵逼了 |
| rm | 慎用,删除文件 | |
| rm -rf /var/log/ | 完全删除该文件夹 | |
| chmod -R 777 | 将文件夹以及子文件夹的权限都设置为777,R不能小写。 chmod -R 777 download | |
| date | 获取系统当前时间 | |
| date -s “2018-2-6 14:25:07” | 设置系统时间,注:admin可能没有权限 | |
| history | 可以打印出之前所输入过的命令,然后用!123就可以指定第123号命令 | |
| truncate | 将文件变为指定大小,可用于创建测试用的垃圾文件,或用于清理日志 | find ./ -name ‘*.out’ | xargs truncate -s 0 |
| yum -y install | centos下安装软件 | yum -y install git |
| ln -s /export/logs/xixixi/ logs | 在当前目录创建一个软链接logs关联指定路径 | |
| \Enter | 将超长的命令转为多行,注意“\”和回车之间没有空格等 |
账户,修改密码相关
| 命令 | 简介 | 备注 |
|---|---|---|
| id | 查看当前登录用户的的信息 | |
| passwd admin | 修改admin用户的密码,如果当前用户是root用户的话,直接输入passwd即可 | |
| echo “123” | passwd ––stdin root | 非常方便快捷的修改密码的方式。 | 缺点是别人可能用history来获取密码,同时密码中不能包含单引号和双引号。并且某些发行版不提供––stdin这个参数。 |
| w | 查看当前用户 | |
| who | 命令查看主机上的用户 | |
| whoami | 查看当前登录的用户 | |
| lastlog | 登录日志 | |
| su | 用户切换 | su rootmima 切换root身份 su -rootmima 切换root身份及shell环境 su admin 切换admin用户 |
压缩包
| 命令 | 简介 | 备注 |
|---|---|---|
| tar -czvf test.tar.gz a | 压缩 a.c文件为test.tar.gz | |
| tar -xzvf test.tar.gz | 解压缩 | |
| zip -r mydata.zip mydata | 把当前目录下面的mydata目录压缩为mydata.zip | |
| unzip | 解压zip文件。unzip xx.zip |
裁切字符串
1
2
3
4
5
6
7
8
9
10
11
12
13
myvar="boobar";
${myvar:3} #输出bar
${myvar:3:2} #输出ba
${myvar: -4} #输出obar 注:中间的空格是必须的
${variable#word} #从字符串开头使用非贪婪模式匹配
phone="666-657-2657"
${phone#*-} #输出657-2657
${variable##word} #从字符串开头使用贪婪模式匹配
${phone##*-} #输出2657
${variable%word} #从字符串结尾使用非贪婪模式匹配
${phone%-*} #输出666-657
${variable%%word} #从字符串结尾使用贪婪模式匹配
${phone%%-*} #输出666
Nginx
| 命令 | 简介 | 备注 |
|---|---|---|
| /export/servers/nginx/sbin/nginx -s reload | 重启 | |
| /export/servers/nginx/sbin/nginx | 启动 | |
| /export/servers/nginx/sbin/nginx -s stop | 关闭 |
less
| 命令 | 简介 | 备注 |
|---|---|---|
| less | 按页查看文件内容,同时具有向上或向下的查询功能 | |
| less xix.sh | 进入less程序。/字符串,为向下查找。?字符串,为向上查找。 | |
| ll | less | 针对文件夹内文件很多的情况,这样就可以显示全了 |
SCP
scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令。本地←→远程双向拷贝。前一个路径为源文件,后一个路径为目标文件
| 命令 | 简介 | 备注 |
|---|---|---|
| scp -P 2181 /etc/hosts root@10.182.74.205:/etc/ | 将本机的host文件通过2181端口以root权限复制到指定机器的/etc/目录下 | |
| scp -P 2181 root@10.182.74.205:/etc/hosts /root | 将远程服务器的host文件通过2181端口复制本机/root目录下 | |
| scp -r -P 2181 root@10.182.74.205:/root /root | 将远程服务器/root下的所有文件及文件夹通过2181端口复制到本机/root目录下 |
lrzsz
lrzsz官网
lrzsz是一个unix通信套件提供的X,Y,和ZModem文件传输协议。
在centos中安装yum install lrzsz。
如果服务器不能连接外网的话,就通过该地址下载后通过yum install lrzsz-0.12.20-27.1.el6.x86_64.rpm来进行安装。
| 命令 | 简介 | 备注 |
|---|---|---|
| sz /home/admin/log1.log | 将log文件从服务器下载到本机 | |
| rz | 页面弹出文件选择的页面,可以上传文件 |
vim
按道理,vim应该抽空做专题的,不过先暂时做个记录吧。拒绝重复造轮子,需要学习vim的朋友,直接去鸟站把第九章、vim 程式編輯器看完,就从入门到精通了。当然也可以去vim的官网上找到一些有用的资料。我这里只是记录下我的笔记。
vim有12种编辑模式,其中6种是basic modes。Normal mode、Visual mode、Select mode、Insert mode、Cmdline mode、Ex mode
Normal mode
光标移动,复制粘贴,批量删除等
| 命令 | 功能 |
|---|---|
| h,j,k,l | 移动光标⬅️,⬇️,⬆️,➡️ |
| 数字 hjkl方向键 | 向指定方向移动一定步数 |
| Ctrl f | 向下翻页 |
| Ctrl b | 向上翻页 |
| 数字 space | 向右步进指定数字的步数 |
| 0 或 Home | 移动到该行最前 |
| $ 或 End | 移动到该行最后 |
| G | 移动到这个文件的最后一行 |
| 数字 G | 移动到这个文件的第“数字”行 |
| x | 等同于delete |
| X | 等同于backspace |
| dd | 删除光标所在行 |
| d1G | 删除光标所在行至第一行的所有数据 |
| dG | 删除从光标所在行到最后一行的所有数据 |
| yy | 复制光标所在行 |
| 数字 yy | 复制光标所在的及向下的“数字”行 |
| p 或 P | 粘贴 |
| u | 撤销(等同于Microsoft Office中的Ctrl z) |
| Ctrl r | 恢复撤销(等同于Microsoft Office中的Ctrl y) |
Cmdline mode
搜索替换
| 命令 | 功能 |
|---|---|
| /word | 向下查找“word”字符串 |
| ?word | 向上查找“word”字符串 |
| n | 继续执行上一次的查找 |
| N | 反向执行上一次的查找 |
| 10,15s/word1/word2/g | 在10至15行中查找“word1”并将其替换为“word2” |
| 1,$s/word1/word2/gc | 全局查找“word1”并将其替换为“word2” |
| 1,$s/word1/word2/g | 全局查找“word1”并将其替换为“word2”,但是每一次替换前都需要确认。 |
环境更改
| 命令 | 功能 |
|---|---|
| set nu | 显示行号 |
| set nonu | 取消显示行号 |
| syntax on | 语法高亮开 |
| syntax off | 语法高亮关 |
文件保存等
| 命令 | 功能 |
|---|---|
| w | 保存 |
| w! | 强制保存 |
| q | 退出 |
| q! | 强制退出 |
| wq | 保存并推出 |
| wfile2 | 将文件另存为“file2” |
| rfile | 将文件”file”中的内容追加到目前光标所在位置的后面 |
| ! ls /home | 暂时离开当前编辑页并执行一个linux命令 |
多文件编辑
| 命令 | 功能 |
|---|---|
| files | 列出目前vim打开的所有文件 |
| n | 编辑下一个文件 |
| N | 编辑上一个文件 |
多窗口编辑
| 命令 | 功能 |
|---|---|
| sp | 当前文件多窗口显示 |
| sp /etc/hosts | 在新窗口中打开新文件 |
| ctrl w j或k | 光标焦点在上下窗口中移动,注意ctrl和w放开后再按方向键 |
| ctrl w q | 结束当前窗口 |
Visual mode、Select mode
| 命令 | 功能 |
|---|---|
| v | 字符选择 |
| V | 行选择 |
| Ctrl v | 块选择 |
| y | 将被选择部分复制 |
| d | 将被选择部分删除 |
job control
| 命令 | 功能 |
|---|---|
| ls -lh & | &用以将当前命令放到后台执行,注意stdout和stderr的重定向 |
| Ctrl z | 将程序暂停 |
| Ctrl c | 将程序强行停止 |
| jobs -l | 查看后台的工作状态 |
| fg %1 | 将后台中的第一个任务拿到前台来执行 |
| bg %2 | 将后台暂停的第2个任务变为后台执行 |
查看系统资源占用相关命令
| 命令 | 简介 | 备注 |
|---|---|---|
| free | 总体内存占用的查看 | 1.默认按kb显示,free -m来用mb表示 2.Mem行,total=used+free,其中buffers和cached虽然计算在used内, 但其实为可用内存。 3.下一行是刨除buffers和cache的结果,是真实的可用内存。 Swap:内存交换区的使用情况。 |
| ps auxw | head -1;ps auxw|sort -rn -k4|head -5 | 查看内存占用前五的进程 | |
| ps auxw|head -1;ps auxw|sort -rn -k3|head -5 | 查看CPU占用前五的进程 | |
| top | 查看系统整体的负载情况 | |
| ps -ef | grep xixi | grep -v ‘grep’ | awk ‘{print $2}’ | 输出xixi相关的进程的PID | 可以配合for循环加kill -9就清理调相关的进程 |
查看CPU信息
1
2
3
4
5
6
7
8
9
10
11
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq
# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l
CentOS7的默认防火墙firewall
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 查看firewall服务状态
$ systemctl status firewalld
# 查看firewall的状态
$ firewall-cmd --state
# 启动firewalld.service服务
$ service firewalld start
Redirecting to /bin/systemctl start mysqld.service
# 重启firewalld.service服务
$ service firewalld restart
Redirecting to /bin/systemctl restart mysqld.service
# 关闭firewalld.service服务
$ service firewalld stop
Redirecting to /bin/systemctl stop mysqld.service
# 查看防火墙规则
$ firewall-cmd --list-all
# 查询端口是否开放
$ firewall-cmd --query-port=8080/tcp
# 开放80端口
$ firewall-cmd --permanent --add-port=80/tcp
# 移除端口
$ firewall-cmd --permanent --remove-port=8080/tcp
# 重启防火墙(修改配置后要重启防火墙)
$ firewall-cmd --reload
ubuntu18.04磁盘初始化及挂载
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
root@ubuntu:~# fdisk -l
Disk /dev/vda: 40 GiB, 42949672960 bytes, 83886080 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xb913566a
Device Boot Start End Sectors Size Id Type
/dev/vda1 * 2048 83884031 83881984 40G 83 Linux
Disk /dev/vdb: 500 GiB, 536870912000 bytes, 1048576000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
root@ubuntu:~# fdisk /dev/vdb
Welcome to fdisk (util-linux 2.31.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0xe0b399a9.
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-1048575999, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-1048575999, default 1048575999):
Created a new partition 1 of type 'Linux' and of size 500 GiB.
Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
root@ubuntu:~# q
Command 'q' not found, but can be installed with:
snap install q # version 1.6.3-1, or
apt install python-q-text-as-data
apt install python3-q-text-as-data
See 'snap info q' for additional versions.
root@ubuntu:~# fdisk -l
Disk /dev/vda: 40 GiB, 42949672960 bytes, 83886080 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xb913566a
Device Boot Start End Sectors Size Id Type
/dev/vda1 * 2048 83884031 83881984 40G 83 Linux
Disk /dev/vdb: 500 GiB, 536870912000 bytes, 1048576000 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xe0b399a9
Device Boot Start End Sectors Size Id Type
/dev/vdb1 2048 1048575999 1048573952 500G 83 Linux
root@ubuntu:~# df -lh
Filesystem Size Used Avail Use% Mounted on
udev 32G 0 32G 0% /dev
tmpfs 6.3G 8.8M 6.3G 1% /run
/dev/vda1 40G 4.5G 33G 13% /
tmpfs 32G 16K 32G 1% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 32G 0 32G 0% /sys/fs/cgroup
tmpfs 6.3G 0 6.3G 0% /run/user/0
root@ubuntu:/mnt# mkfs.ext4 /dev/vdb1
mke2fs 1.44.1 (24-Mar-2018)
Creating filesystem with 131071744 4k blocks and 32768000 inodes
Filesystem UUID: 21054d6d-ab15-4766-83e5-f85479f5124c
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000
Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done
root@ubuntu:/mnt#
root@ubuntu:/mnt# mount /dev/vdb1 /mnt/vdb1
root@ubuntu:/mnt# df -lh
Filesystem Size Used Avail Use% Mounted on
udev 32G 0 32G 0% /dev
tmpfs 6.3G 8.8M 6.3G 1% /run
/dev/vda1 40G 4.5G 33G 13% /
tmpfs 32G 16K 32G 1% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 32G 0 32G 0% /sys/fs/cgroup
tmpfs 6.3G 0 6.3G 0% /run/user/0
/dev/vdb1 492G 73M 467G 1% /mnt/vdb1
root@bianyuanyun:/mnt# cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/vda1 during installation
UUID=af9f46d3-4314-44ae-b2bf-baba80ae6dfd / ext4 errors=remount-ro 0 1
/dev/vdb1 /mnt ext4 defaults 0 1
批量解压文件到压缩包文件名的文件夹中
1
2
3
4
for i in `ls /data/app/mobile/lib`
do
unzip $i -d /data/app/mobile/lib/${i%-*}
done
参考截取字符串
更新记录
- 2020年9月:增加firewall
- 2020年11月:整理vim
- 2021年1月:批量解压
- 2022年1月:查看CPU信息、ubuntu18.04磁盘初始化及挂载