1.查看Linux系统版本
cat /etc/redhat-release (只有centos和redhat系统可以用)
[root@cos7-zx-init dy]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) [root@cos7-zx-init dy]#
2.查看内核版本
uname -r
[root@cos7-zx-init dy]# uname -r 3.10.0-1160.el7.x86_64 [root@cos7-zx-init dy]# uname -srm Linux 3.10.0-1160.el7.x86_64 x86_64 内核参数解析例子: Linux 3.10.0-957.12.2.el7.x86_64 x86_64 3 - 内核版本. 10 - 主修订版本. 0-957 - 次要修订版本. 12 - 补丁版本.
3.一次性查看Linux系统和内核版本
[root@cos7-zx-init proc]# hostnamectl Static hostname: cos7-zx-init Icon name: computer-vm Chassis: vm Machine ID: 3c6ef4dc99cc4b08ac56233d09d60210 Boot ID: 22c62dabf7d54796a4d7ae41e15a7af9 Virtualization: vmware Operating System: CentOS Linux 7 (Core) CPE OS Name: cpe:/o:centos:centos:7 Kernel: Linux 3.10.0-1160.el7.x86_64 Architecture: x86-64 [root@cos7-zx-init proc]#
4.查看自己的机器是32位还是64位
getconf LONG_BIT
5.终端删除整行
ctrl+u 删除命令行开始至光标处 ctrl+k 删除光标处至命令行结尾 ctrl+a 光标移动到最前面 ctrl+e 光标移动到最后面
6.vim文本编辑相关命令
dd 删除整行 d$或D 删除至行尾 d^ 删除至行首 dG 删除到文档结尾处 d1G 删除至文档首部 gg 游标移动到第一行 G 游标移动到最后一行 nG 游标移动到第n行(如果默认没有显示行号,请先进入命令行模式,输入:set nu以显示行号) yy 复制游标所在的整行 3yy 向下复制3行,以此类推 yG 复制至文本末 y1G 复制至文本开头 p 粘贴至光标后 P 粘贴至光标前 ~ 反转游标所在字母大小写 u(n) 撤销一次或n次操作 U(大写) 撤销当前行的所有修改 80gg 跳转到第80行 :80 跳转到第80行 shift + zz = :wq 保存退出 shift + zq = :q! 不保存退出 :%s/要替换的内容/替换后的内容/g 全局替换
7.内存和硬盘
lsblk #查看硬盘和分区分布 df -h #查看磁盘使用情况 free -m #查看内存信息 du -sh #查看当前目录总大小 du -sh * #列出当前文件夹下各内容的大小 du -s * | sort -nr #由大到小排序 du -s * | sort -nr | head #选出排在前面的10个 du -s * | sort -nr | tail #选出排在后面的10个 lscpu #查看cpu的相关信息 fdisk -l |grep Disk #查看磁盘分区情况 lspci|grep Ethernet #查看网卡硬件信息 dmidecode -t bios #查看BIOS相关信息 dmidecode |grep -A16 "System Information$" #查看主板型号 cat /sys/block/sda/queue/rotational #查看数值,1表示旋转就是机械硬盘,0非旋转就是固态硬盘。 lsblk #列出所有存储设备
8.修改主机名
1.hostnamectl set-hostname 主机名 重新打开命令行即可 2.vim /etc/hostname 重启后生效
9.修改ip地址
vim /etc/sysconfig/network-scripts/ifcfg-eth33 TYPE=Ethernet DEVICE=eth32 BOOTPROTO=static ONBOOT=yes IPADDR=192.168.28.222 NETMASK=255.255.255.0 GATEWAY=192.168.28.1 DNS1=114.114.114.114 DNS2=8.8.8.8 systemctl restart network
10.关闭SELinux
(1)临时关闭(重启机器后失效) setenforce 0 (2)永久关闭(需要重启机器) sed -i s#SELINUX=enforcing#SELINUX=disabled# /etc/selinux/config (3)查看状态 getenforce
11.rocky9重启网卡
nmcli connection reload nmcli connection down ens160 nmcli connection up ens160
12.目录及用户权限
查看用户密码到期时间 chage -l 用户名 创建没有登录权限的用户 useradd -d /home/dy -s /sbin/nologin dongyue chmod augo +_rwx 文件名 chmod -R augo +_rwx 目录名 完全删除用户 userdel -r <用户名称> 创建用户组 groupadd <组名> 删除组,用户组里面有用户,必须先把用户移动或删除了,才能删除组 groupdel 组名 只修改文件所属用户 (不使用 -R) chown <用户名称> <文件名称> 只修改文件所属组 (不使用 -R) chown :<用户组名称> <文件名称> 同时修改所属用户和组 chown 用户:用户组 -R 你的目录 修改用户的主组 usermod -g [组名称] [用户名] 将现有用户添加到新的组,保留原有组 usermod -a -G <组名称> <用户名称> 将用户从某个用户组中删除 gpasswd -d <用户名称> <用户组名称> 查看用户所属组 groups <用户名称> 查看组中的成员 getent group <组名> 查看有哪些组 cat /etc/group 查看有哪些用户 cat /etc/passwd 一行命令修改用户密码 echo "用户名:密码" | chpasswd 或者 echo 密码 | passwd --stdin 用户名
13.服务相关
systemctl is-enabled firewalld.service 查看服务是不是被开启 systemctl list-units --type=service 查看本机开启的所有服务 自己写服务 1、手动创建nginx.service服务文件。并将其放入 /lib/systemd/system 文件夹中。 vim /usr/lib/systemd/system/nginx.service [Unit] Description=nginx After=network.target [Service] Type=forking PIDFile=/var/run/nginx.pid #nginx.conf设置pid位置 ExecStartPre=/usr/local/nginx/sbin/nginx -t ExecStart=/usr/local/nginx/sbin/nginx ExecReload=/usr/local/nginx/sbin/nginx -s reload ExecStop=/usr/local/nginx/sbin/nginx -s quit PrivateTmp=true [Install] WantedBy=multi-user.target ######################### PS: 注意上面的ExecStart/ExecReload/ExecStop 必须 以自己的为主 ########################## 所对应的key说明 Description:描述服务 After:描述服务类别 [Service]服务运行参数的设置 Type=forking是后台运行的形式 ExecStart为服务的具体运行命令 ExecReload为重启命令 ExecStop为停止命令 PrivateTmp=True表示给服务分配独立的临时空间 注意:[Service]的启动、重启、停止命令全部要求使用绝对路径 [Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3 2.设置开机启动enable systemctl start nginx.service (启动nginx服务) systemctl stop nginx.service (停止nginx服务) systemctl enable nginx.service (设置开机自启动) systemctl disable nginx.service (停止开机自启动) systemctl status nginx.service (查看服务当前状态) systemctl restart nginx.service (重新启动服务) systemctl list-units --type=service (查看所有已启动的服务)
14.SSH免密登录
1.本地客户端生成公私钥:(一路回车默认即可) ssh-keygen 下面这行不用点回车直接生成 ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa -q 上面这个命令会在用户目录.ssh文件夹下创建公私钥 cd ~/.ssh id_rsa (私钥) id_rsa.pub (公钥) 2.上传公钥到服务器 ssh-copy-id -i ~/.ssh/id_rsa.pub root@远端服务器IP 会在远端服务器上的ssh目录下产生authorized_keys文件 3.测试免密登录 ssh root@远端服务器IP
15.通过pid号查服务目录
ps -aux |grep -v grep|grep pid号
16.zip解压后乱码问题
unzip -O gb18030 文件名.zip
17.vim中粘贴出现递归空格
在使用vim时,有时候把数据粘贴进去会出现自动空格,导致格式不行,一个一个弄会很费时间,想保持原有的格式,可以这样做: shift+:进入命令模式 输入:set paste 再粘贴就可以保持和复制前的格式一样
18.rsync+crontab实现定时增量备份及删除
实现免密传输: A机创建ssh免密登录,传输公钥给B机,C机用A机的私钥和known_hosts文件就可以免密连接B机。 增量备份: #!/bin/bash source /etc/profile rsync -avuz -P -e 'ssh -p 22 -i /root/.ssh/id_rsa' --bwlimit=5000 /home/zxicetftp/ root@172.18.1.174:/home/zxicetftp/ 删除三天前的备份: #! /bin/bash source /etc/profile TMPDATE=`date +%Y_%m_%d_%H_%M_%S` cp -r /home/bfftp /opt/bfftpfullback/bfftp_$TMPDATE find /opt/bfftpfullback/ -type d -mtime +3 -exec rm -rf {} \;
19.java后台启动
nohup /opt/jdk/bin/java -jar /home/jenkins.war >/home/jenkinsout.txt 2>&1 &
20.查看目录下的文件夹
包含软连接过来的目录 ls -d */ 不包含软连接过来的目录 ls -l | grep "^d"
21.防火墙常用命令
查看开放的端口有哪些 firewall-cmd --list-ports 开端口 firewall-cmd --zone=public --add-port=端口号/tcp --permanent firewall-cmd --reload 关端口 firewall-cmd --zone=public --remove-port=端口号/tcp --permanent firewall-cmd --reload
22.windows调整敏感度
在设置中搜uac
23.grep查找文件内容
复制到浏览器打开 https://blog.youkuaiyun.com/limanjihe/article/details/115263801
24.mount --bind
n形式的软连接ftp不认,mount文件系统级别的软连接ftp认。 目标文件夹可读写且所在分区不会增加占用,源文件夹所在分区会变化大小,其实就是一个快捷方式和ln一样。 mount --bind 源文件夹地址 目标文件夹地址
25.parted创建分区
当现有硬盘大小不够用时,可以添加新的硬盘进来,需要用parted命令来创建分区。 步骤如下: 1.进入到/dev下看新加入的硬盘是sdb还是sdc; 2.输入parted /dev/sdb 命令回车; 3.输入mktable gpt回车,将标记此驱动器以使用 GPT 方案; 4.输入mkpart回车来创建分区,分区名称可以不写(类似于U盘的卷标),文件系统类型选择ext4,起始点0%,结束点100%; 5.输入quit回车; 6.输入mkfs.ext4 /dev/sdb回车来格式化分区; 7.输入mount /dev/sdb /opt/aaa来挂载分区; 8.这样就挂载完了,可以通过mount或者df -h查看; fdisk也可以进行磁盘分区
26.linux的vim中行末尾多了很多 ^M
进入vim的命令行模式输入 :%s/\r//gc 同理:如果出现^V则用:%s/^V//gc替换
27.网段划分
域名 顶级 .com 一级 sdea.com 或 sdea.com.cn 二级 www.sdea.com 地址分类 A: 1.0.0.0 - 126.255.255.255 B: 128.0.0.0 - 191.255.255.255 C: 192.0.0.0 - 223.255.255.255 D: 224.0.0.0 - 239.255.255.255 E: 240.0.0.0 - 255.255.255.255 私有地址 10.0.0.0 - 10.255.255.255 172.16.0.0 - 172.31.255.255 192.168.0.0 - 192.168.255.255
28.sudo命令
1./etc/sudoers 系统默认创建了一个名为 sudo 的组。只要把用户加入这个组,用户就具有了 sudo 的权限。 至于如何把用户加入 sudo 组,您可以直接编辑 /etc/group 文件,当然您得使用一个有 sudo 权限的用户来干这件事: 先创建用户并设置密码后,然后在sudo组中加入该用户,多个用户用逗号隔开。 添加内容如下: 我们把用户 testuser 添加到了 sudo 组中,所以当用户 testuser 登录后就可以通过 sudo 命令以 root 权限执行命令了! 但是,用testuser执行root权限的命令时会报错: 解决办法: 1)、切换到root用户下 普通用户切换到root用户下:sudo -i root用户切换到普通用户下:su testuser 2)、添加sudo文件的写权限,命令是: chmod u+w /etc/sudoers 3)、编辑sudoers文件 vi /etc/sudoers 找到这行 root ALL=(ALL) ALL,在他下面添加xxx ALL=(ALL) ALL (这里的xxx是你的用户名) ps:这里说下你可以sudoers添加下面四行中任意一条 youuser ALL=(ALL) ALL %youuser ALL=(ALL) ALL youuser ALL=(ALL) NOPASSWD: ALL %youuser ALL=(ALL) NOPASSWD: ALL 第一行:允许用户youuser执行sudo命令(需要输入密码). 第二行:允许用户组youuser里面的用户执行sudo命令(需要输入密码). 第三行:允许用户youuser执行sudo命令,并且在执行的时候不输入密码. 第四行:允许用户组youuser里面的用户执行sudo命令,并且在执行的时候不输入密码. 4)、撤销sudoers文件写权限,命令: chmod u-w /etc/sudoers 这样普通用户就可以使用sudo了。 2./etc/sudoers.d 系统文档推荐的做法是,修改/etc/sudoers.d 目录下的文件通过此方法修改sudoers ,需要在/etc/sudoers文件的最后行,加上 #includedir /etc/sudoers.d 注意;这里的指令#includedir是一个整体, 前面的#号不能丢,并非注释,也不能在#号后有空格。 任何在/etc/sudoers.d/目录下,不以~号结尾的文件和不包含.号的文件,都会被解析成/etc/sudoers的内容。最好用用户名当文件名。 比如我新创建的用户 hyc 想要实现root权限,可在/etc/sudoers.d /下新建一个文件userhyc 文件,输入以下语句 hyc ALL=(ALL:ALL) NOPASSWD:ALL 。此时新建的用户就能获取root权限,ALL可以改成具体的命令,命令要用绝对路径。 文件中也可以这样写,命令多的话可以用别名。 Cmnd_Alias SWADMIN_START_SERVICES = /etc/init.d/nginx,/etc/init.d/tomcat*,/opt/scripts/updateBackendCode.sh,/opt/lucky/nginx/sbin/nginx,/usr/bin/kill,opt/scripts/* swadmin ALL=(ALL)NOPASSWD:SWADMIN_START_SERVICES
29.redis批量清理缓存
./redis-cli -h IP -p PORT -a PASSWORD -n NUM keys 'key*' | xargs ./redis-cli -h IP -p PORT -a PASSWORD -n NUM del IP:redis服务器的IP地址 PORT:redis服务的端口 PASSWORD :redis服务的密码 NUM:redis库的下标 注意:记得以上批量删除,需要退出redis的命令行模式下操作。必须要指定redis的路径。 /usr/bin/redis-cli -n 1 -p 6379 -a 123456 keys 'UPLOAD_*' | xargs /usr/bin/redis-cli -n 1 -p 6585 -a 123456 del
30.top命令 iftop命令 iotop命令
top命令用来查看进程占用的资源情况,浏览器打开下面链接查看 https://blog.youkuaiyun.com/qq_31762741/article/details/119799402 iftop命令用来查看网卡的流量情况,浏览器打开下面链接查看 https://www.vpser.net/manage/iftop.html iotop命令用来查看磁盘的io情况,浏览器打开下面链接查看 https://blog.youkuaiyun.com/ver_mouth__/article/details/125244352
31.查找变量所在位置
find . -name "*.*" | xargs grep "test" 上述信息请用查找的变量信息来替换test
32.用sftp命令从Windows和Linux之间下载文件
https://www.cnblogs.com/bonelee/p/16036326.html
32.错误代码403、404
403 权限问题或首页文件不存在 404 要找的目录或者文件不存在
33.命令行终端显示-bash-4.2$
比如安装postgresql数据库后切换到postgres用户后显示-bash-4.2$。 上面故障产生一般有以下两点原因: 1.用户家目录不存在 2.用户家目录存在,但是下面的模板文件不存在(.bash_profile和.bashrc) 解决办法: su - postgres cp /etc/skel/.bash* . exit su - postgres
34.windows命令行使用ftp
Windows命令行使用FTP——windows下自带ftp命令
命令 | 说明 | 格式 | 参数说明 |
bye | 结束与远程计算机的 FTP 会话并退出 ftp | bye | |
cd | 更改远程计算机上的工作目录 | cd RemoteDirectory | RemoteDirectory 指定要更改的远程计算机上的目录。 |
dir | 显示远程计算机上的目录文件和子目录列表 | dir [RemoteDirectory] [LocalFile] | RemoteDirectory 指定要查看其列表的目录。如果没有指定目录,将使用远程计算机中的当前工作目录。LocalFile 指定要存储列表的本地文件。如果没有指定本地文件,则屏幕上将显示结果。 |
get | 使用当前文件传输类型将远程文件复制到本地计算机。如果没有指定 LocalFile,文件就会赋以 RemoteFile 名。get 命令与 recv 相同。 | get RemoteFile [LocalFile] | RemoteFile 指定要复制的远程文件。LocalFile 指定要在本地计算机上使用的文件名。 |
lcd | 更改本地计算机上的工作目录。默认情况下,工作目录是启动 ftp 的目录 | lcd [Directory] | Directory 指定要更改的本地计算机上的目录。如果没有指定 Directory,将显示本地计算机中的当前工作目录。 |
ls | 显示远程目录上的文件和子目录的简短列表 | ls [RemoteDirectory] [LocalFile] | RemoteDirectory 指定要查看其列表的目录。如果没有指定目录,将使用远程计算机中的当前工作目录。LocalFile 指定要存储列表的本地文件。如果没有指定本地文件,将在屏幕上显示结果。 |
open | 与指定的 FTP 服务器连接。可以使用 IP 地址或计算机名(两种情况下都必须使用 DNS 服务器或主机文件)指定 Computer。 | open Computer [Port] | Computer 必需。指定试图要连接的远程计算机。Port 指定用于联系 FTP 服务器的 TCP 端口号。默认情况下,使用 TCP 端口号 21。 |
put(send) | 使用当前文件传输类型将本地文件复制到远程计算机上。put 命令与 send 命令相同。如果没有指定 RemoteFile,文件就会赋以 LocalFile 名。 | put LocalFile [RemoteFile] | LocalFile 指定要复制的本地文件。RemoteFile 指定要在远程计算机上使用的名称。 |