关键词:linux mysql redis mongodb zk kafka es nginx 常用命令
linux 日常常用运维命令
linux 具体用法查询工具: https://man.linuxde.net/
一、linux 系统运维命令整理
1、系统信息查询
命令 | 描述 |
---|---|
arch | uname -m | 显示机器的处理器架构 |
uname -r | 显示正在使用的内核版本 |
dmidecode -q | 显示硬件系统部件 |
hdparm -i DEVICE_NAME | 罗列一个磁盘的架构特性 |
hdparm -tT DEVICE_NAME | 在磁盘上执行测试性读取操作 |
cat /proc/cpuinfo | 显示CPU info的信息 |
cat /proc/interrupts | 显示中断 |
cat /proc/meminfo | 校验内存使用 |
cat /proc/swaps | 显示哪些swap被使用 |
cat /proc/version | 显示内核的版本 |
cat /proc/net/dev | 显示网络适配器及统计 |
cat /proc/mounts | 显示已加载的文件系统 |
lspci -tv | 罗列 PCI 设备 |
lsusb -tv | 显示 USB 设备 |
date | 显示系统日期 |
cal 2007 | 显示2007年的日历表 |
date 041217002007.00 | 设置日期和时间 - 月日时分年.秒 |
clock -w | 将时间修改保存到 BIOS |
2、开关机
命令 | 描述 |
---|---|
shutdown -h now | 关闭系统(1) |
init 0 | 关闭系统(2) |
telinit 0 | 关闭系统(3) |
shutdown -h hours:minutes & | 按预定时间关闭系统 |
shutdown -c | 取消按预定时间关闭系统 |
shutdown -r now | 重启(1) |
reboot | 重启(2) |
logout | 注销 |
3、文件和目录相关
命令 | 描述 |
---|---|
cd /home | 进入 '/ home' 目录' |
cd .. | 返回上一级目录 |
cd ../.. | 返回上两级目录 |
cd [~] | 进入家目录 |
cd - | 返回上次所在的目录 |
pwd | 显示工作路径 |
ls -F | 查看目录中的文件 |
ls *[0-9]* | 显示包含数字的文件名和目录名 |
tree | 显示文件和目录由根目录开始的树形结构(1) |
lstree | 示文件和目录由根目录开始的树形结构(2) |
mkdir {dir1,dir2} | 同时创建两个目录 |
mkdir -p /tmp/dir1/dir2 | 创建一个目录树 |
rm -rf dir1 dir2 | 同时删除两个目录及它们的内容 |
mv dir1 new_dir | 重命名/移动 一个目录 |
cp dir/* . | 复制一个目录下的所有文件到当前工作目录 |
ln -s file1 lnk1 | 创建一个指向文件或目录的软链接(符号链接) |
ln file1 lnk1 | 创建一个指向文件或目录的物理链接 |
touch -t 0712250000 file1 | 修改一个文件或目录的时间戳 - (YYMMDDhhmm) |
iconv -l | 列出已知的编码 |
4、文件搜索
命令 | 描述 |
---|---|
find / -name file1 | 从 '/' 开始进入根文件系统搜索文件和目录 |
find / -user user1 | 搜索属于用户 'user1' 的文件和目录 |
find /home/user1 -name \*.bin | 在目录 '/ home/user1' 中搜索带有'.bin' 结尾的文件 |
find /usr/bin -type f -atime +100 | 搜索在过去100天内未被使用过的执行文件 |
find /usr/bin -type f -mtime -10 | 搜索在10天内被创建或者修改过的文件 |
find / -name \*.rpm -exec chmod 755 '{}' ; | 搜索以 '.rpm' 结尾的文件并定义其权限 |
whereis halt | 显示一个二进制文件、源码或man的位置 |
which halt | 显示一个二进制文件或可执行文件的完整路径 |
5、挂载一个文件系统,文件系统修复
命令 | 描述 |
---|---|
mount /dev/hda2 /mnt/hda2 | 挂载一个叫做hda2的盘 - 确定目录 '/ mnt/hda2' 已经存在 |
umount /dev/hda2 | 卸载一个叫做hda2的盘 - 先从挂载点 '/ mnt/hda2' 退出 |
fuser -km /mnt/hda2 | 当设备繁忙时强制卸载 |
umount -n /mnt/hda2 | 运行卸载操作而不写入 /etc/mtab 文件- 当文件为只读或当磁盘写满时非常有用 |
mount /dev/fd0 /mnt/floppy | 挂载一个软盘 |
mount /dev/cdrom /mnt/cdrom | 挂载一个cdrom或dvdrom |
mount /dev/hdc /mnt/cdrecorder | 挂载一个cdrw或dvdrom |
mount /dev/hdb /mnt/cdrecorder | 挂载一个cdrw或dvdrom |
mount -o loop file.iso /mnt/cdrom | 挂载一个文件或ISO镜像文件 |
mount -t vfat /dev/hda5 /mnt/hda5 | 挂载一个Windows FAT32文件系统 |
mount /dev/sda1 /mnt/usbdisk | 挂载一个usb 捷盘或闪存设备 |
mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share | 挂载一个windows网络共享 |
badblocks -v /dev/hda1 | 检查磁盘hda1上的坏磁块 |
fsck - t ext2|3|4 /dev/hda1 | 修复/检查hda1磁盘上linux文件系统的完整性 |
fsck.ext2|3|4 /dev/hda1 | 修复/检查hda1磁盘上ext2|3|4文件系统的完整性 |
dosfsck /dev/hda1 | 修复/检查hda1磁盘上dos文件系统的完整性 |
6、磁盘空间
命令 | 描述 |
---|---|
df -h | 显示已经挂载的分区列表 |
ls -lSr|more | 以尺寸大小排列文件和目录 |
du -sh dir1 | 估算目录 'dir1' 已经使用的磁盘空间' |
du -h -x [指定目录]--max-depth=1 | 查看哪个目录占用过高 |
du -sk * |sort -rn | 以容量大小为依据依次显示文件和目录的大小 |
7、用户和组
命令 | 描述 |
---|---|
groupadd group_name | 创建一个新用户组 |
groupdel group_name | 删除一个用户组 |
groupmod -n new_group_name old_group_name | 重命名一个用户组 |
useradd -c "Name Surname " -g admin -d /home/user1 -s /bin/bash user1 | 创建一个属于 "admin" 用户组的用户 |
useradd user1 | 创建一个新用户 |
userdel -r user1 | 删除一个用户 ( '-r' 排除主目录) |
usermod -c "User FTP" -g system -d /ftp/user1 -s /bin/nologin user1 | 修改用户属性 |
passwd | 修改口令 |
passwd user1 | 修改一个用户的口令 (只允许root执行) |
chage -E 2020-12-31 user1 | 设置用户口令的失效期限 |
pwck | 检查 '/etc/passwd' 的文件格式和语法修正以及存在的群组 |
newgrp group_name | 登陆进一个新的群组以改变新创建文件的预设群组 |
8、文件权限
命令 | 描述 |
---|---|
ls -lh | 显示权限 |
ls /tmp |pr -T5 -W$COLUMNS | 将终端划分成5栏显示 |
chmod ugo+rwx directory1 | 设置目录的所主(u)、群组(g)以及其他人(o)以读(r )、写(w)和执行(x)的权限 |
chmod go-rwx directory1 | 删除群组(g)与其他人(o)对目录的读写执行权限 |
chown user1 file1 | 改变一个文件的属主属性 |
chown -R user1 directory1 | 改变一个目录的属主属性并同时改变改目录下所有文件的属性 |
chgrp group1 file1 or chown :group1 | 改变文件的群组 |
chown user1:group1 file1 | 改变一个文件的所有人和群组属性 |
find / -perm -u+s | 罗列一个系统中所有使用了SUID控制的文件 |
chmod u+s /bin/file1 | 设置一个二进制文件的 SUID 位 - 运行该文件的用户也被赋予和所有者同样的权限 |
chmod g+s /home/public | 设置一个目录的SGID 位 - 类似SUID ,不过这是针对目录的 |
chmod o+t /home/public | 设置一个文件的 STIKY 位 - 只允许合法所有人删除文件 |
chattr +a file1 | 只允许以追加方式读写文件 |
chattr +c file1 | 允许这个文件能被内核自动压缩/解压 |
chattr +d file1 | 在进行文件系统备份时,dump程序将忽略这个文件 |
chattr +i file1 | 设置成不可变的文件,不能被删除、修改、重命名或者链接 |
chattr +s file1 | 允许一个文件被安全地删除 |
chattr +S file1 | 一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘 |
chattr +u file1 | 若文件被删除,系统会允许你在以后恢复这个被删除的文件 |
lsattr | 显示特殊的属性 |
9、打包和压缩文件
命令 | 描述 |
---|---|
bunzip2 file1.bz2 | 解压一个叫做 'file1.bz2'的文件 |
bzip2 file1 | 压缩一个叫做 'file1' 的文件 |
gunzip file1.gz | 解压一个叫做 'file1.gz'的文件 |
gzip file1 | 压缩一个叫做 'file1'的文件 -9 最大程度压缩 |
rar a file1.rar test_file | 创建一个叫做 'file1.rar' 的压缩包 |
rar a file1.rar file1 file2 dir1 | 同时压缩 'file1', 'file2' 以及目录 'dir1' |
rar x file1.rar 或unrar x file1.rar | 解压rar包 |
tar -cvf archive.tar file1 | 创建一个非压缩的 tarball |
tar -cvf archive.tar file1 file2 dir1 | 创建一个包含了 'file1', 'file2' 以及 'dir1'的档案文件 |
tar -tf archive.tar | 显示一个包中的内容 |
tar -xvf archive.tar | 释放一个包 |
tar -xvf archive.tar -C /tmp | /tmp 将压缩包释放到 /tmp目录下 |
tar -cvfj archive.tar.bz2 dir1 | 创建一个bzip2格式的压缩包 |
tar -jxvf archive.tar.bz2 | 解压一个bzip2格式的压缩包 |
tar -cvfz archive.tar.gz dir1 | 创建一个gzip格式的压缩包 |
tar -zxvf archive.tar.gz | 解压一个gzip格式的压缩包 |
zip file1.zip file1 | 创建一个zip格式的压缩包 |
zip -r file1.zip file1 file2 dir1 | 将几个文件和目录同时压缩成一个zip格式的压缩包 |
nzip file1.zip | 解压一个zip格式压缩包 |
10、RPM包
命令 | 描述 |
---|---|
rpm -ivh package.rpm | 安装一个rpm包 |
rpm -ivh --nodeeps package.rpm | 安装一个rpm包而忽略依赖关系警告 |
rpm -U package.rpm | 更新一个rpm包但不改变其配置文件 |
rpm -F package.rpm | 更新一个确定已经安装的rpm包 |
rpm -e package_name.rpm | 删除一个rpm包 |
rpm -qa| grep httpd | 显示所有名称中包含 "httpd" 字样的rpm包 |
rpm -qi package_name | 获取一个已安装包的特殊信息 |
rpm -ql package_name | 显示一个已经安装的rpm包提供的文件列表 |
rpm -qc package_name | 显示一个已经安装的rpm包提供的配置文件列表 |
rpm -q package_name --whatrequires | 显示与一个rpm包存在依赖关系的列表 |
rpm -q package_name --whatprovides | 显示一个rpm包所占的体积 |
rpm -q package_name --scripts | 显示在安装/删除期间所执行的脚本 |
rpm -q package_name --changelog | 显示一个rpm包的修改历史 |
rpm -qf /etc/httpd/conf/httpd.conf | 确认所给的文件由哪个rpm包所提供 |
rpm -qp package.rpm -l | 显示由一个尚未安装的rpm包提供的文件列表 |
rpm --import /PATH/TO/RPM-GPG-KEY | 导入公钥数字证书 |
rpm --checksig package.rpm | 确认一个rpm包的完整性 |
rpm -qa gpg-pubkey | 确认已安装的所有rpm包的完整性 |
rpm -V package_name | 检查文件尺寸、 许可、类型、所有者、群组、MD5检查以及最后修改时间 |
rpm -Va | 检查系统中所有已安装的rpm包- 小心使用 |
rpm -Vp package.rpm | 确认一个rpm包还未安装 |
rpmbuild --rebuild package_name.src.rpm | 从一个rpm源码构建一个 rpm 包 |
11、yum (Fedora,RedHat及类似系统)
命令 | 描述 |
---|---|
yum install package_name | 下载并安装一个rpm包 |
yum localinstall package_name.rpm | 将安装一个rpm包,使用你自己的软件仓库为你解决所有依赖关系 |
yum update | 更新当前系统中所有安装的rpm包 |
yum update package_name | 更新一个rpm包 |
yum remove package_name | 删除一个rpm包 |
yum list | 列出当前系统中安装的所有包 |
yum search package_name | 在rpm仓库中搜寻软件包 |
yum clean packages | 清理rpm缓存删除下载的包 |
yum clean headers | 删除所有头文件 |
yum clean all | 删除所有缓存的包和头文件 |
**12、DEB包,APT工具(Debian,Ubuntu) **
命令 | 描述 |
---|---|
dpkg -i package.deb | 安装/更新一个 deb 包 |
dpkg -r package_name | 从系统删除一个 deb 包 |
dpkg -l | 显示系统中所有已经安装的 deb 包 |
dpkg -l |grep httpd | 显示所有名称中包含 "httpd" 字样的deb包 |
dpkg -s package_name | 获得已经安装在系统中一个特殊包的信息 |
dpkg -L package_name | 显示系统中已经安装的一个deb包所提供的文件列表 |
dpkg --contents package.deb | 显示尚未安装的一个包所提供的文件列表 |
dpkg -S /bin/ping | 确认所给的文件由哪个deb包提供 |
apt-get install package_name | 安装/更新一个 deb 包 |
apt-cdrom install package_name | 从光盘安装/更新一个 deb 包 |
apt-get update | 升级列表中的软件包 |
apt-get upgrade | 升级所有已安装的软件 |
apt-get remove package_name | 从系统删除一个deb包 |
apt-get check | 确认依赖的软件仓库正确 |
apt-get clean | 从下载的软件包中清理缓存 |
apt-cache search searched-package | 返回包含所要搜索字符串的软件包名称 |
**13、查看文件内容 **
命令 | 描述 |
---|---|
cat file1 | 从第一个字节开始正向查看文件的内容 |
tac file1 | 从最后一行开始反向查看一个文件的内容 |
more file1 | 查看一个长文件的内容 |
less file1 | 类似于 'more' 命令,但是它允许在文件中和正向操作一样的反向操作 |
head -2 file1 | 查看一个文件的前两行 |
tail -2 file1 | 查看一个文件的最后两行 |
tail -f /var/log/messages | 实时查看被添加到一个文件中的内容 |
**14、文本处理 **
命令 | 描述 |
---|---|
cat file1|command( sed, grep, awk, grep, etc...) > (>>)result.txt | 合并一个文件的详细说明文本,并将简介写入一个新文件(追加)中 |
grep 'Aug' /var/log/messages | 在文件 '/var/log/messages'中查找关键词"Aug" |
grep Aug -R /var/log/* | 在目录 '/var/log' 及随后目录中搜索字符串"Aug" |
sed 's/stringa1/stringa2/g' example.txt | 将example.txt文件中的 "string1" 替换成 "string2" |
sed '/^$/d' example.txt | 从example.txt文件中删除所有空白行 |
sed '/ *#/d; /^$/d' example.txt | 从example.txt文件中删除所有注释和空白行 |
echo 'esempio' |tr '[:lower:]' '[:upper:]' | 合并上下单元格内容 |
sed -e '1d' result.txt | 从文件example.txt 中排除第一行 |
sed -n '/stringa1/p' | 查看只包含词汇 "string1"的行 |
sed -e 's/ *$//' example.txt | 删除每一行最后的空白字符 |
sed -e 's/stringa1//g' example.txt | 从文档中只删除词汇 "string1" 并保留剩余全部 |
sed -n '1,5p;5q' example.txt | 查看从第一行到第5行内容 |
sed -n '5p;5q' example.txt | 查看第5行 |
sed -e 's/00*/0/g' | example.txt 用单个零替换多个零 |
cat -n file1 | 标示文件的行数 |
cat example.txt|awk 'NR%2==1' | 删除example.txt文件中的所有偶数行 |
echo a b c|awk '{print 3}' | 查看一行的第一和第三栏 |
paste file1 file2 | 合并两个文件或两栏的内容 |
paste -d '+' file1 file2 | 合并两个文件或两栏的内容,中间用"+"区分 |
sort file1 file2 | 排序两个文件的内容 |
sort file1 file2|uniq | 取出两个文件的并集(重复的行只保留一份) |
sort file1 file2|uniq -u | 删除交集,留下其他的行 |
sort file1 file2|uniq -d | 取出两个文件的交集(只留下同时存在于两个文件中的文件) |
comm -1 file1 file2 | 比较两个文件的内容只删除 'file1' 所包含的内容 ;-2 删除 'file2' 所包含的内容;-3 只删除两个文件共有的部分 |
15、 字符设置和文件格式转换
命令 | 描述 |
---|---|
os2unix filedos.txt fileunix.txt | 将一个文本文件的格式从MSDOS转换成UNIX |
unix2dos fileunix.txt filedos.txt | 将一个文本文件的格式从UNIX转换成MSDOS |
recode ..HTML < page.txt > page.html | 将一个文本文件转换成html |
recode -l |more | 显示所有允许的转换格式 |
16、 初始化一个文件系统
命令 | 描述 |
---|---|
mkfs -t ext2|3|4 /dev/hda1 | 在hda1分区创建一个文件系统--格式化 |
mkfs.ext# /dev/db1 | 在db1分区创建一个文件系统--格式化 |
fdformat -n /dev/fd0 | 格式化一个软盘 |
mkswap /dev/hda3 | 创建一个swap文件系统 |
swapon /dev/hda3 | 启用一个新的swap文件系统 |
17、 备份
命令 | 描述 |
---|---|
dump -0aj -f /tmp/home0.bak /home | 制作一个 '/home' 目录的完整备份 |
dump -1aj -f /tmp/home0.bak /home | 制作一个 '/home' 目录的交互式备份 |
restore -if /tmp/home0.bak | 还原一个交互式备份 |
rsync -rogpav --delete /home /tmp | 同步两边的目录 |
rsync -az -e ssh --delete ip_addr:/home/public /home/local | 通过ssh和压缩将一个远程目录同步到本地目录 |
rsync -az -e ssh --delete /home/local ip_addr:/home/public | 通过ssh和压缩将本地目录同步到远程目录 |
dd bs=1M if=/dev/hda|gzip|ssh user@ip_addr 'dd of=hda.gz' | 通过ssh在远程主机上执行一次备份本地磁盘的操作 |
dd if=/dev/sda of=/tmp/file1 | 备份磁盘内容到一个文件 |
tar -Puf backup.tar /home/user | 执行一次对 '/home/user' 目录的交互式备份操作 |
dd if=/dev/hda of=/dev/fd0 bs=512 count=1 | 做一个将 MBR (Master Boot Record)内容复制到软盘的动作 |
dd if=/dev/fd0 of=/dev/hda bs=512 count=1 | 从已经保存到软盘的备份中恢复MBR内容 |
18、 网络 - (以太网和WIFI无线)**
命令 | 描述 |
---|---|
ifconfig | 显示以太网卡的配置 |
ifup eth0 | 启用一个 'eth0' 网络设备 |
ifdown eth0 | 禁用一个 'eth0' 网络设备 |
ifconfig eth0 192.168.1.1 netmask 255.255.255.0 | 给网卡添加ip |
dhclient eth0 | 以dhcp模式启用 'eth0' |
route -n show routing table | 查看路由表 |
... |
特别整理:文件‘三剑客’:gawk,sed,grep
-
grep(global search regular expression and print out the line) 文件过滤工具
#语法 grep [OPTION] PATTENRN [FILE] #OPTION: 常用选项 -i 忽略字符大小写 -l 列出文件内容符合指定的范本样式的文件名称 -L 列出文件内容不符合指定的范本样式的文件名称 -v 反向匹配 -o 仅显示匹配到的字符串本身 -E 仅支持使用扩展正则表达式元字符 -q 静默模式 -R/-r 递归搜索文件 #PATTENER 基本正则表达式元字符: . :匹配任意单个字符 []: [^]: [[:upper:]] :所有大写字母 [^[:upper:]] [[:lower:]] : 所有小写字母 [[:alpha:]] : 所有字母 [[:digit:]] : 所有数字 [[:alnum:]] : 所有字母和数字 [[:space:]] : 所有空白字符 [[:punct:]] : 所有标点符号 *:匹配其漆面的字符任意次 .*:匹配任意长度的任意字符 \?:匹配其前面的字符0次或1次 \+:匹配其前面的字符至少1次 \{m\}:精确次数 \{m,n\}匹配前面字符至少m次,至多n次 ^:行首锚定 $:行尾锚定 ^PATTENERN$:用于PATTERN来匹配匹配 ^$:空白行 ^[[:space:]]*$:空行或包含空白符的行 \<或\b:词首锚定 \>或\b: 词尾锚定 分组及引用:\(PATTENN\)---基本正则表达式 \(xy\)* 引用: \1 :模式从左侧起,第一个分组匹配的模式 \2 ... 扩展正则表达式元字符: .:任意单个字符 []:指定范围内的任意单个字符 [^]:指定范围外的任意单个字符 *:任意次数 ?: 0次或1次 +:匹配其前面的字符至少1次 {m}:其前字符m次 {m,n}:匹配前面字符至少m次,至多n次 ^:行首锚定 $:行尾锚定 \<或\b:词首锚定 \>或\b: 词尾锚定 ():分组 a|b:a或b
sed行编辑器,行编辑器
#语法: sed [options] 'COMMAND' file(s) #多个COMMADN 用“;”分割
sed [options] -f scriptfile file(s) #指定的script文件来处理输入的文本文件 -n
仅显示scritpt 处理后的结果
#[OPTION]
-n 仅显示scritpt 处理后的结果
-h 显示帮助
--version 显示版本信息
-i 编辑并保持到文件
-r 支持扩展表达式
#定界符
不给地址范围:对全文进行处理
NUM 指定行 /PATTERN/匹配指定行
NUM1,NUM2 地址范围[NUM1,NUM2]
NUM1,+NUM2
/PART1/,/PART2/
NUM,/PART/
~步进 1~2 1行开始步进为2
#COMMAND '定界符.. 替换标记'
a\ 在当前行下面插入文本 eg: sed -i '/PATTERN/a\**' file 在匹配模式下面插入文本
i\ 在当前行上面插入文本 eg: sed -i '1i\i love xi' 1.sh 插入到首行
d 删除,选择的行 eg: sed -i '1d' file ;sed -i '1,2d;s/hello/nihao/g' 1.sh
D 删除第一行
s 替换指定字符 eg: sed -i 's/PATTERN/**/'
c\替换行位单行或多行文本
! 后面的命令对所有没有选定的行发生作用
= 打印当前行号
#替换标记
g 表示行内全面替换。
p 表示打印行。
w 表示把行写入一个文件。
x 表示互换模板块中的文本和缓冲区中的文本。
y 表示把一个字符翻译为另外的字符(但是不用于正则表达式)
\1 子串匹配标记
& 已匹配字符串标记
#常用sed 命令
sed -n 'n;p' file :显示偶数行
sed '1!G;h;$!d' file :逆向显示内容
sed '$!N;$!D' file 取出文件后2行
sed '$!d' file 取出文件最后一行
sed 'G' file :在每一行后加入空白行
sed '/^$/d;G' file :将多个空白行,合并成一个,没有的添加一个空白行
sed 'n;d' file :显示奇数行
sed -n '1!G;h;$p' file 逆向显示文件中每一行
-
gawk文本编辑器
#语法 gawk [options] 'SCRIPT' var=value file(s) gawk [options] -f scriptfile var=value file(s) #OPTIONS -F fs fs指定输入分隔符,fs可以是字符串或正则表达式,如-F: -f scripfile 从脚本文件中读取awk命令 -v var=value 赋值一个用户定义变量,将外部变量传递给awk #SCRIPT 基本结构 gawk 'BEGIN{ commands } pattern{ commands } END{ commands }' file 第一步:执行BEGIN{ commands }语句块中的语句; 第二步:从文件或标准输入(stdin)读取一行,然后执行pattern{ commands }语句块,它逐行扫描文件,从第一行到最后一行重复这个过程,直到文件全部被读取完毕。 第三步:当读至输入流末尾时,执行END{ commands }语句块。 #内建变量 FS: input field seperator字段分隔符,默认是空格和制表符。 OFS: output field seperator eg cat /etc/passwd | gawk -v FS=':' -v OFS=':' '{print $2,$3}}' RS: input record seperatort 输入时的换行符 ORS:输出时的换行符 NF: number of field 字段数量 {pirnt NF} 打印字段数,{print $NF}打印最后一个字段,print {$(NF-1)}打印倒数第二个字段 NR:number of record:行数 gawk 'NR==1,NR==3 {}' FNR: file number of record: 各文件分别计数行数 FILENAME:当前文件名 ARGC:命令行参数的个数 ARGV:数组,保存的时命令行所给定的各参数 printf命令: 将外部变量传给awk 一、VAR=10000 echo | awk -v VARIABLE=$VAR '{ print VARIABLE }' 二、var1="aaa" var2="bbb" echo | awk '{ print v1,v2 }' v1=$var1 v2=$var2 三、awk '{ print v1,v2 }' v1=$var1 v2=$var2 filename 变量来自于文件
二、mysql常用运维命令
1、基础运维命令
命令 | 描述 |
---|---|
select @@version; | 查询当前mysql的版本 |
show variables like 'port'; | 查看mysql实例的端口 |
show variables like 'socket'; | 查看实例的socket数据 |
show variables like 'datadir'; | 查看实例的数据路径 |
show databases; | 显示所有数据库名的命令 |
desc tablename; | 显示表结构和列结构的命令 |
show processlist \G; | 显示正在执行的线程 |
explain | 查看语句的执行计划 |
show index from table_name | 查看表的索引情况 |
select * from STATISTICS where table_name='XXX'\G | 查看表的统计信息 |
select @@max_allowed_packet/1024/1024; | 查询定义的packet大小,单位M |
show master status; | 查看master状态 |
show slave status\G; | 查看slave状态 |
show master logs | 查看所有的log文件 |
show binary logs | 查看binlog日志列表 |
purge binary logs to 'mysql-bin3306.000003'; | 删除mysql-bin3306.000003之前的日志 |
show warnings; | 显示最近的警告详情 |
show variables \G; show variables like 'PAR_NAME'; | 查看当前mysqld的所有参数,包括默认值 |
show grants for 'username'@'hostip' \G; | 查看某一个用户的权限,请替换参数username 和 hostip |
show create table tablename | 查看某表的创建脚本 |
show variables like 'log_slave%' \G; | 指定条件的参数设置查询,例如查询以log_slave开头的参数设置。 |
show variables like 'slow_query_log'; | 查看是否开启了慢查询日志;ON代表开启。可以在线打开。set global slow_query_log = 1; |
show variables like 'slow_query_log_file'; | 查看慢查询日志的路径 |
show variables like 'long_query_time | 查看慢查询定义的阈值,单位是秒。记录的查询是大于该值,不包括该值 |
show variables like 'log_queries_not_using_indexes'; | 将没有使用索引的SQL语句记录到慢查询日志中 |
show variables like 'log_throttle_queries_not_using_indexes'; | 集合上面的参数一起使用,限制每分钟内,在慢查询日志中,记录没有使用 |
show variables like "default%tmp%"; | 查看创建的临时表的存储引擎类型 |
show variables like 'innodb_log_file_size'; | 查询log文件大小 |
show variables like 'innodb_buffer_pool_size'; | 查看缓冲池的大小,每次读写数据都是通过buffer pool |
show variables like 'innodb_buffer_pool_instances | 置多少个缓冲池。设置多个instance可将热点打散,提高并发性能(建议设置成cpu个数值) |
show engine innodb status \G; | 查看innodb的状态。(查看默认存储引擎的类型: SELECT @@default_storage_engine;) |
set global innodb_buffer_pool_size=210241024*1024; | 在线调整innodb_buffer_pool_size。MySQL 5.7之前的版本,修改该值,需要重启。 |
show variables like 'innodb_buffer_pool_dump_at_shutdown'; | 在MySQL 5.6 以后,可以在停机的时候dump出buffer pool的数据,然后在启动的时候Load进buffer pool。该功能可以在MySQL启动时自动预热,无需人工干预 |
show variables like 'innodb_buffer_pool_dump_pct'; | dumpd 百分比,是每个buffer pool文件,而不是整体 |
show variables like 'innodb_buffer_pool_load_at_startup'; | 启动时加载dump的文件,恢复到buffer pool中 |
select * from x$innodb_lock_waits; | 查看锁的信息,在数据库sys下执行 |
show variables like 'transaction_isolation'; | 查看隔离级别 |
set transaction_isolation='read-committed'; | 设置隔离级别 |
show variables like 'innodb_print_all_deadlocks'; | 设置为ON,表示将死锁信息打印到err_log中 |
show variables like "%innodb_flush_log_at_timeout%"; | master thread 每秒刷新redo的buffer到logfile |
show variables like 'binlog_format'; | 查看binlog的类型 |
2、DDL,DML,DCL,TCL
-
DDL(create,alter,drop,truncate,commit,rename)
# CREATE - create databases 创建数据库 - create event 创建事件 - create function 创建函数 - create function udf - create index 创建索引 - create logfile group 创建日志组 - create procedure 创建存储过程 - create server - create table 创建表 - create tablespace 创建表空间 - create trigger 创建触发器 - create user 创建用户 - create view 创建视图 - show create database - show create event - show create function - show create procedure - show create table - show create user # alter - alter databases 用于更改数据库的全局特性 - alter event 修改已存在的事件 - alter function 修改函数 - alter logfile group 修改日志组 - alter procedure 修改存储过程 - alter server - alter table 修改表属性,增删改列,修改表明等 - alter tablespace - alter user 修改用户密码 - alter view 修改视图 # drop - drop database - drop event - drop function - drop function udf - drop index - drop procedure - drop server - drop table - drop tablespace - drop trigger - drop user - drop view # truncate - truncate table # rename - rename table - rename user
-
DML(select, insert, update, delete, merge, call, explain,lock table )
# select - 语法 SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [MAX_STATEMENT_TIME = N] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr ...] [FROM table_references [PARTITION partition_list] [WHERE where_condition] [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [HAVING where_condition] [ORDER BY {col_name | expr | position} [ASC | DESC], ...] [LIMIT {[offset,] row_count | row_count OFFSET offset}] [PROCEDURE procedure_name(argument_list)] [INTO OUTFILE 'file_name' [CHARACTER SET charset_name] export_options | INTO DUMPFILE 'file_name' | INTO var_name [, var_name]] [FOR UPDATE | LOCK IN SHARE MODE]] eg: where select goods_id,shop_price from goods where goods_id=1; group select cat_id.count(*) from goods group by cat_id; having select goods_name,(market_price-shop_price) as sheng from goods having sheng >200; order by select select col1,... from table_name order by col1,....; limit select col1,... from table_name limit n,m (n为起始位置,m为截取的条数) where 子查询:内层的查询结果作为外层查询的条件,select .... from table_name where (select .....) from型子查询:select * from (select * from table_ame where ...) where.... 内连接查询(inner join .. on ..):交集 select a.col1,a.col2...,b.col1,b.col2... from table_a a inner join table_b b on a.colN=b.colN;eg:select boy.hid,bname,girl.hid,gname from boy inner join gril on boy.hid=girl.hid; 左连接查询(left join);以左表为基准即查询结果左表都会列出,右表按条件与左表进行匹配,若匹 配则列出,未配置的为空:select a.col1,a.col2...,b.col1,b.col2... from table_a left join table_b on a.colN=b.colN; 右连接查询(right join): 类比左连接查询union查询:查询将多个查询合并成一个表----select 出的列数必须相同,列名称会使用第一条select列名称。使用uion时,完全相等的行,将会被合并,合并 比较耗时,不进行合并使用union all select * from a union select * from b; # insert insert into table_name (列名1,列名2,...) value (值1,值2,....)[,(值1,值2,....),.....]; # update update table_name set column1=** ,column2=** ,.... where 限定行的条件 # delete delete from table_name where 限定条件; # explain explain SELECT statement | DELETE statement | INSERT statement | INSERT statement | REPLACE statement | UPDATE statement # lock table LOCK TABLES tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE} [, tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE}]
-
DCL (grant,revoke)
#grant GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] priv_level TO user_specification [, user_specification] ... [REQUIRE {NONE | tsl_option [[AND] tsl_option] ...}] [WITH {GRANT OPTION | resource_option} ...] GRANT PROXY ON user_specification TO user_specification [, user_specification] ... [WITH GRANT OPTION] eg: GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'youpassword' WITH GRANT OPTION; #revoke REVOKE priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] priv_level FROM user [, user] ... eg: revoke all privileges from test;
-
TCL (commit,rollback,savepoint,set transaction)事务控制语句,
# commit 事务提交 # rollback DML事务进行回滚 # savepoint 设置回滚点 # set transcation 设置事务隔离级别
3、mysqldump, mysqladmin,mysqlbinlog
-
mysqldump
#语法 mysqldump mysqldump [options] [db_name [tbl_name ...]] # 常用option * -u * -h * -p * -P * -S * --all-databases , -A * --all-tablespaces , -Y 导出全部表空间 * --add-drop-database 每个数据库创建之前添加drop数据库语句 * --add-drop-table * --add-locks 在每个表导出之前增加LOCK TABLES并且之后UNLOCK TABLE * --databases, -B 导出库数据,包括创建库结构 * --default-character-set=** 设置默认字符集,默认值为utf8 * --events, -E 导出时间 * --flush-logs, -F 开始导出之前刷新日志,果打算同时导出和刷新日志应该使用-- lock-all-tables 或者--master-data 和--flush-logs * --flush-privileges 在导出mysql数据库之后,发出一条FLUSH PRIVILEGES * --ignore-table 不导出指定表,指定忽略多个表时,需要重复多次 * --lock-all-tables, -x 提交请求锁定所有数据库中的所有表,以保证数据的一致性 * --no-create-db, -n 只导出数据,而不添加CREATE DATABASE 语句。 * --no-create-info, -t 只导出数据,而不添加CREATE TABLE 语句。 * --no-data, -d 不导出任何数据,只导出数据库表结构 * --routines, -R 导出存储过程以及自定义函数 * --triggers 导出触发器。该选项默认启用 * --complete-insert, -c 使用完整的insert语句(包含列名称)。这么做能提高插入效率 * --compress, -C 在客户端和服务器之间启用压缩传递所有信息 * --force 在导出过程中忽略出现的SQL错误 * --log-error 附加警告和错误信息到给定文件 * --master-data=NUM 该选项将binlog的位置和文件名追加到输出文件中。如果为1,将会 输出CHANGE MASTER 命令;如果为2,输出的CHANGE MASTER 命令前添加注释信息 * --max_allowed_packet 服务器发送和接受的最大包长度 * --xml, -X 导出XML格式 #常用备份命令 导出整个数据库,包括库,表结构: mysqldump -u root -p -A -B --master-data=2 > all.sql 恢复: mysql -u root -p <all.sql or 登录数据库 mysql> source all.sql 导出指定库: mysqldump -u root -p -B --master-data=2 db1,db2... > back.sql 恢复: mysql -u root dbname < back.sql or 登录数据库 mysql> source back.sql 导出数据库结构(不含数据): mysqldump -u root -p -d dbname > back.sql 恢复: mysql -u root dbname < back.sql or 登录数据库 mysql> source back.sql 导出指定库中的指定表(结构加数据): mysqldump -u root -p -B dbname --table tablename > back.sql 恢复: mysql -u root dbname < back.sql or 登录数据库,use dbname mysql< source back.sql mysqldump -u root -p dbname tablename > back.sql 导出数据库中指定表的结构: mysqdump - u root -p -d dbname tablename > back.sql 备份数据库排除指定表: mysqldump -uroot -p“password” --ignore-table=dbname.table1 --ignore-table=dbname.table2 dbname > /opt/backup.sql 压缩备份:mysqldump -h主机ip -u用户名 -p密码(也可不输入) 数据库名 | gzip > 压缩后文件位置 压缩恢复:gunzip < backupfile.sql.gz | mysql -u用户名 -p密码(也可不输入) 数据库名
-
mysqladmin
# 是一个执行管理操作的客户端程序。它可以用来检查服务器的配置和当前状态、创建和删除数据库等 # 语法: mysqladmin [选项] [参数] * 选项:-h -u -p * 参数: create databasename:创建一个新数据库; drop databasename:删除一个数据库及其所有表; extended-status:给出服务器的一个扩展状态消息; flush-hosts:清空所有缓存的主机; flush-logs:清空所有日志; flush-tables:清空所有表; flush-privileges:再次装载授权表(同reload); kill id,id,...:杀死mysql线程; password 新口令:将老密码改为新密码; ping:检查mysqld是否活着; processlist:显示服务其中活跃线程列表; reload:重载授权表; refresh:清空所有表并关闭和打开日志文件; shutdown:关掉服务器; status:给出服务器的简短状态消息; variables:打印出可用变量; version:得到服务器的版本信息
-
mysqlbinlog
- 获取当前日志: mysql>show binary logs; - mysqlbinlog * 默认显示:mysqlbinlog mysql-bin.000001 * 获取特定数据库条目,-d选项指定数据库名称:mysqlbinlog -d test mysql-bin.000001 > test.sql * 禁止恢复过程产生日志-D选项(使用时必备选项):mysqlbinlog -D * 输出调试信息:在完成处理给定的二进制日志文件之后,将检查文件打开和内存使用:mysqlbinlog --debug-check mysql-bin.000001 * 跳过前N个条目-o NUM: mysqlbinlog -o 10 mysql-bin.000001 * 从一个特定位置提取条目-j NUM:mysqlbinlog -j 12580 mysql-bin.000001 >12580.sql * 将条目起始到一个特定的位置--start-position --stop-position: * 刷新日志以清除Binlog输出mysql> flush logs; * 在输出中只显示sql语句-s|--short-form选项:msyqlbinlog -s * 查看特定起止时间的条目--start-datetime --stop-datetime "2020-02-13 14:00:00" * 从远程服务器获取二进制日志-R:mysqlbinlog -R -h *** -p mysql-bin.000001
-
mysqldumpslow
# 慢查询设置 cat my.cnf long_query_time=30 slow_query_log=1 log_output=table,file #日志输出会写表,也会写日志文件 slow_query_log_file=/data/mysql/slow.log * 不重启设置慢查询 mysql> set global log_output='TABLE'; -- 输出到表 set global general_log = on; -- 打开所有命令执行记录功能general_log, 所有语句: 成功和未成功的. set global slow_query_log = on; -- 打开慢查询sql记录slow_log set global long_query_time=30; -- 慢查询时间限制(秒) set global log_queries_not_using_indexes=ON; -- 记录未使用索引的sql语句 * 查询:show global status like '%Slow_queries%'; # mysqldumpslow慢查询分析 #语法 mysqldumpslow [options] [logfile] # options -s 按照哪种方式排序 t 按照查询时间或平均查询时间,默认排序方式 l 按照lock time or 平均lock time 查询 r 按照rows sent or 平均 rows sent排序 c 按照计数排序 c 访问计数 l 锁定时间 r 返回记录 al 平均锁定时间 ar 平均访问记录数 at 平均查询时间 -t NUM 返回NUM条数据 -g 跟正在匹配模式,大小写不敏感 # 示例 返回记录最多的20条sql:mysqldumpslow -s r -t 20 slow.log * 得到平均访问次数最多的20条sql:mysqldumpslow -s ar -t 20 slow.log * 得到平均访问次数最多,并且里面含有mq字符的20条sql:mysqldumpslow -s ar -t 20 -g "mq" slow.log
三、redis常用运维命令
命令 | 描述 |
---|---|
登录 | redis-cli -h ** -p ** -a PASSWD |
检查key是否存在 | EXISTS key |
检索某关键字 | KEYS *4 |
返回一个key所影响的vsl的类型 | TYPE key |
设置一个建的值 | SET key value |
获取一个键的值 | GET key |
删除键值对 | DEL key |
同事获取多个键 | mget key1 key2 |
设置一个hash | HMSET key valueKey value --<key,<valuekey,value>> |
获取hash 所有key,value | HGETALL key |
获取hash所有key | HKEYS key |
获取hash所有key的value | HVALS key |
给一个hash的某个键值对赋值 | HSET key valueKey value |
当hash中valueKey不存在时赋值 | HSETNX key valueKey value |
给list赋值 | LPUSH listName value |
按照索引取值 | LINDEX listName 1 |
查找key | keys[? * [] ] ? 匹配一个字符 * 匹配任意个字符 [] 匹配括号内的人一个字符 |
dbsize | 查询键总数 |
expire key seconds | 当超过过期时间,会自动删除,key在seconds秒后过期 |
expireat key timestamp | 键在秒级时间戳timestamp后过期 |
pexpire key milliseconds | 当超过过期时间,会自动删除,key在milliseconds毫秒后过期 |
pexpireat key milliseconds-timestamp key | 在毫秒级时间戳timestamp后过期 |
ttl | 可以查看键hello的剩余过期时间,单位:秒(>0剩余过期时间;-1没设置过期时间;-2键不存在) |
键重命名 | rename key newkey |
随机返回一个键 | randomkey |
迁移键 | move key db dump+restore migrate |
渐进式遍历键 | scan |
切换数据库 | select dbIndex 默认16个数据库:0-15,进入redis后默认是0库。不建议使用多个数据库 |
用于清除数据库,flushdb只清除当前数据库,flushall清除所有数据库。 | flushdb / flushall |
更详细的参考 |
https://blog.csdn.net/weixin_41850404/article/details/84634508 https://segmentfault.com/a/1190000010999677 https://www.jianshu.com/writer#/notebooks/42187693/notes/61110077 |
四、MongoDB常用命令
命令 | 描述 | 示例 |
---|---|---|
mongo --port | 本地登录 | |
use Db_Name | 创建数据库 or切换库 | use baby |
db.dropDatabase() | 使用当前库,删除库 | |
db | 查看所有数据 | |
db.getName() | 查看当前正在使用的数据库 | |
show collections | 查看当前数据库下有哪些集合 | |
db.createCollection("集合名称")<br />db.集合名称.insert(文档) | 当前库创建集合 | db.student.insert(<br />{name:”tom”,age:18,gender:1,<br />address:”北 京”,isDelete:0}) |
db.集合名.drop() | 删除集合 | |
db.集合名.insert(文档)<br />db.集合名.save(文档) | 文档插入 | |
db.collection.update( <query>, <update>, { upsert:<boolean>, multi:<boolean>, writeConcern: <document> } ) | 更新文档update()方法 | query : update的查询条件,类似sql update查询内where后面的。 update : update的对象和一些更新的操作符(如inc...)等,也可以理解为sql update查询内set后面的 upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。 multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。 writeConcern :可选,抛出异常的级别 |
db.collection.save( <document>, { writeConcern: <document> } ) | 更新文档save()方法 | document : 文档数据。 writeConcern :可选,抛出异常的级别。 |
db.collection.remove( <query>, { justOne: <boolean>, writeConcern: <document> } ) | 删除文档 | query :(可选)删除的文档的条件。 justOne : (可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。 writeConcern :(可选)抛出异常的级别<br />remove() 方法 并不会真正释放空间。需要继续执行 db.repairDatabase() 来回收磁盘空间。 |
db.collection.find(query, projection) | 查询文档 | query :可选,使用查询操作符指定查询条件 projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值, 只需省略该参数即可(默认省略)。<br />eg:db.col.find({key1:value1, key2:value2}).pretty()<br />大于:db.col.find({key:{gte<br />小于:lte<br />与:db.col.find({条件1,条件2,...})<br />或:db.col.find({$or:[条件1,条件2...]}) |
五、postgresql常用命令
【psql】
命令 | 描述 | 示例 |
---|---|---|
psql -U pg_user -h pg_host<br /> -p pg_port -d database | 登录数据库 | |
增删改查命令跟mysql SQL命令一样 | ||
\l | 查看系统中现存的数据库 | |
\q | 退出客户端程序 | |
\c | 从一个数据库切换到另一个数据库 | |
\dt | 查看当前库的表 | |
\d | 查看表结构 | |
\di | 查看索引 | |
\dn | 查看表 | |
\h | 查看sql命令的解释 | \h select ... |
? | 查看psql命令列表 | |
\d tb_name | 列出指定表的表结构 | |
\du | 列出所有的用户 | |
\e | 打开文本编辑器 | |
\conninfo | 列出当前数据库和连接的信息 |
【pgpool】
命令 | 描述 | 示例 |
---|---|---|
psql -h -p pgpool_port | 连接pgpool | |
show pool_nodes | 查看postgresql各节点状态 | |
2、psql命令特别整理
(1)pg_dump & pg_dumpall
一、pg_dump:用于备份postgresql数据库,它可以在数据库运行时使用,pg_dump不会阻塞其他的用户访问数据库
# 语法:
pg_dump [连接选项] [命令选项] [库名]
#命令选项
-a:只导出数据,不导出表结构
-c:输出在创建数据库创建命令之前先删除该数据库对象的命令
-C:以一条创建该数据库本身并且与这个数据库联接等命令开头进行输出
-d:将数据输出为的INSERT命令 (而不是 COPY). 这样会导致恢复非常缓慢.但却令归档更容易移植到其它 SQL 数据库.
-f file --file=file 把输出发往指定的文件
-s --schema-only 只输出表纲要(定义),不输出数据
-t table --table=table 只输出表 table的数据.
-Z 0..9 --compress=0..9 声明在那些支持压缩的格式中使用的压缩级别.
示例:pg_dump -h pg_host -U pg_user -p pg_port -f filename db_name
二、pg_dumpall
# 语法
pg_dumpall [连接选项] [命令选项][库名]
# 命令选项
-a:只导出数据,不导出表结构
-c:在转储结果中包含哪些重建之前清理数据库对象的sql命令
-f filename:发送输出到指定的文件
-g --globals-only:只转储全局对象(角色和表空间),而不转储数据库
-r --roles-only:只转储角色,不转储数据库或表空间
-s:只输出对象定义(模式),不输出数据
-t:只转储表空间,不转储数据库或角色
(2) pg_restore
# 从pg_dump创建的备份中恢复数据库
# 语法
pg_restore [选项] [备份文件]
# 选项
-d 指定恢复的库名
-f 用来恢复的文件
-a 只恢复数据,不恢复表结构
-c 在重新创建数据库对象之前清除(删除)它们。(除非使用了——if-exists,否则可能会这样如果目标中没有任何对象,则生成一些无害的错误消息数据库)。备份中有表结构信息,没有使用-a选项只备份数据
-C 在还原之前创建数据库。如果—c也被指定,删除并重新创建
-t 指定恢复的表
示例:
pg_restore -h pg_host -U pg_user -p pg_port -d db_name backup.sql
https://www.jianshu.com/p/dacf1f765ab6 备份恢复方案
(3)psql
# psql
postgresql 交互式终端
# 语法
psql [选项]
# 常用参数
-h pg_host
-U pg_user
-p pg_port
-d login dbname
-c shell端运行sql语句
-f fielname 从脚本中执行sql语句
-s 单步执行
(4) pg_ctl
# pg_ctl
启动,停止和重启PostgreSQL
# 语法
pg_ctl start [-w] [-s] [-D datadir] [-l filename] [-o options] [-p path]
pg_ctl stop [-W] [-s] [-D datadir] [-m s[mart] | f[ast] | i[mmediate] ]
pg_ctl restart [-w] [-s] [-D datadir] [-m s[mart] | f[ast] | i[mmediate] ] [-o options]
pg_ctl reload [-s] [-D datadir]
pg_ctl status [-D datadir]
pg_ctl kill [signal_name] [process_id]
restart 实际上是先执行一个停止,然后紧跟一个启动。它允许变换postmaster命令行的选项
reload 模式简单地给postmaster发送一个 SIGHUP 信号,导致它重新读取她的配置文件 (postgresql.conf,pg_hba.conf 等等) 这样就允许修改配置文件选项而不用完全重启系统来使之生效
status 模式监查一个服务器是否在指定的数据目录运行, 如果是,那么显示其 PID 和调用它的命令行选项
# 选项
-w 等待启动或者关闭完成,在60s后超时
-s 只打印错误,而不打印提示性信息
-l filename 把服务器日志输出附加在 filename 文件上。 如果该文件不存在,那么创建它,目录需手动创建
-o options声明要直接传递给postmaster 的选项。参数通常都用单或者双引号包围以保证它们作为一个整体传递。
-D 指定数据目录位置
-m 声明关闭模式。mode 可以是smart, fast, 或者 immediate,或者是这三个之一的第一个字母
-W 不等待启动或者停止的完成。这是启动和重起的缺省。
(5) pg_controldata
(6) pg_archive
(7) pg_config
(8) pg_receivewal
(9) pgawk
(10) pg_isready
(11) pg_recvlogical
(12) pg_basebackup
(13) pg_md5
(14) pgrep
(15) pgbench
(16) pgpool
(17) pg_resetwal
六、es常用命令
描述 | 命令 |
---|---|
查看es集群统计信息 | curl -XGET 'http://localhost:9200/_cluster/stats?pretty' |
查看所有索引 | curl 'localhost:9200/_cat/indices?v' |
查看集群的节点列表 | curl 'localhost:9200/_cat/nodes?v' |
检查集群状态 | curl 'localhost:9200/_cat/health?v' |
获取数据 | curl -XGET 'localhost:9200/customer/external/1?pretty' #获取customer索引下类型为external,id为1的数据,pretty参数表示返回结果格式 |
创建索引 | curl -XPUT 'localhost:9200/customer?pretty' |
删除索引 | curl -XGET 'localhost:9200/customer/external/1?pretty' |
插入数据 | curl -XPUT 'localhost:9200/customer/external/1?pretty' d |
查询数据 | curl 'localhost:9200/bank/_search?q=*&pretty'<br />#返回所有bank中的索引数据,其中q=* |
https://blog.csdn.net/zhuoshengda/article/details/90378466 |
七、rabbitmq常用命令
命令 | 描述 | 示例 |
---|---|---|
rabbitmq-plugins list | 查看插件打开情况 | |
rabbitmq-plugins disable rabbitmq_managemen | 关闭监控管理器 | |
rabbitmq-plugins enable rabbitmq_management | 启动web管理器 | |
service rabbitmq-server start|stop|restart | 启动服务 | |
rabbitmq-service start|stop | 启动rabbitmq | |
rabbitmqctl stop_app|start_app | 关闭应用 | |
rabbitmqctl list_queues | 查看所有的队列 | |
rabbitmqctl reset | 清楚所有的队列 | |
rabbitmqctl list_users | 查看用户 | |
rabbitmqctl status | 查看状态 | |
rabbitmqctl cluster_status | 查看集群状态 | |
rabbitmqctl add_user admin admin | 新增用户 | |
rabbitmqctl delete_user admin | 删除用户 | |
rabbitmqctl change_password admin admin123 | 修改密码 | |
rabbitmqctl list_users | 查看用户列表 | |
rabbitmqctl set_user_tags | 设置用户属于的角色 | rabbitmqctl set_user_tags admin administrator monitoring policymaker management |
rabbitmqctl set_permissions | 设置用户权限 | rabbitmqctl set_permissions -p VHostPath admin ConfP WriteP ReadP |
rabbitmqctl list_permissions | 查询所有权限 | |
rabbitmqctl list_user_permissions admin | 指定用户权限 | |
rabbitmqctl clear_permissions | 清除用户权限 |
2、特别整理
- rabbitmqctl
八、zookeeper 常用命令
命令 | 描述 | 示例 |
---|---|---|
zkCli.sh -server ip:port | 连接zk | zkCli.sh -server 127.0.0.1:2181 |
zkServer.sh start|stop|restart|staus | 启动 | |
连接后命令 | help | |
ls / | 查看当前 ZooKeeper 中所包含的内容 | |
ls2 / | 查看当前节点数据并能看到更新次数等数据 | |
create /zk "test" | 创建一个新的 znode节点“ zk ”以及与它关联的字符串获取文件内容 | |
get /zk | 获取/zk节点文件内容 | |
echo stat|nc 127.0.0.1 2181 | 来查看哪个节点被选择作为follower或者leader | |
echo ruok|nc 127.0.0.1 2181 | 测试是否启动了该Server,若回复imok表示已经启动。 | |
echo dump|nc 127.0.0.1 2181 | 列出未经处理的会话和临时节点 | |
echo kill|nc 127.0.0.1 2181 | 关掉server | |
echo conf|nc 127.0.0.1 2181 | 输出相关服务配置的详细信息 | |
echo cons|nc 127.0.0.1 2181 | 列出所有连接到服务器的客户端的完全的连接 / 会话的详细信息。 | |
echo envi|nc 127.0.0.1 2181 | ,输出关于服务环境的详细信息(区别于 conf 命令) | |
echo reqs|nc 127.0.0.1 2181 | 列出未经处理的请求 | |
echo wchs|nc 127.0.0.1 2181 | 列出服务器watch的详细信息 | |
echo wchc|nc 127.0.0.1 2181 | 通过session列出服务器watch的详细信息,它的输出是一个与 watch 相关的会话的列表。 | |
echo wchp|nc 127.0.0.1 2181 | ,通过路径列出服务器 watch 的详细信息。它输出一个与 session 相关的路径。 |
九、kafka常用命令
描述 | |
---|---|
./kafka-server-start.sh ../config/server.properties & | |
创建topic | ./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic tes |
查看kafka的topic | ./kafka-topics.sh --zookeeper master:2181 --list |
查看kafka某个topic下partition信息 | ./kafka-topics.sh --describe --zookeeper master:2181 --topic test-topic |
查看kafka的指定topic | ./kafka-topics.sh --zookeeper master:2181 --describe --topic yq20171220 |
控制台向kafka生产数据 | ./kafka-console-producer.sh --broker-list master:9092 --topic jason_20180519 |
控制台消费kafka的数据 | ./kafka-console-consumer.sh --zookeeper storm1:2181 --topic jason_20180519 --from-beginning |
查看topic下某分区偏移量的最小值 | ./kafka-run-class.sh kafka.tools.GetOffsetShell --topic test-topic --time -1 --broker-list master:9092 --partitions 0 |
增加topic的partition | ./kafka-topics.sh --alter --topic jason_20180519 --zookeeper 10.200.10.24:2181,10.200.10.26:2181,10.200.10.29:2181 --partitions 5 |
删除topic只会删除zookeeper中的元数据,消息文件须手动删除 | ./kafka-run-class.sh kafka.admin.DeleteTopicCommand --zookeeper master:2181 --topic yq20171220 |
彻底删除topic | rmr /brokers/topics/【topic name】 |