Linux下的命令笔记
文章目录
- 常见问题
- Linux常用命令
- linux中巧用ctrl-z后台运行程序
- 练习过的Linux常用命令
- Linux目录结构
- VI编辑器
- 虚拟机网络模式
- linux常用命令
- 文件权限
- 用户操作
- 用户组操作
- 软硬链接
- rpm安装使用
- yum安装mysql 无排版附件
- 解压.tar.gz格式压缩包配置(安装JDK和Tomcat) 无排版附件
- 面试使用加分的常见命令
- 查看端口是否启动:`netstat -nap | grep 端口号`
- 查看防火墙开放的端口号:`iptables -L -n`
- 查看程序对应的进程号:`ps aux | grep redis`
- 编辑防火墙配置文件:`vim /etc/sysconfig/iptables`
- nginx启动:`cd /usr/local/nginx/sbin` `./nginx`
- redis启动命令:`./redis-service redis-config`
- 开放防火墙端口的命令
- Docker 教程
- Docker 清理命令
- 系统时间设置
- top命令
- Linux管道符和多命令执行符
- sshpass命令使用
- curl排查耗时
相关笔记:Linux系统基础学习笔记1
常见问题
Linux中找不到ifconfig命令的解决方法
解决主机与虚拟机ping不通
情景:vm14上的系统拷贝到vm12上打不开
解决办法:
vmware workstation 12 打开vm14 不兼容问题解决
无法获得VMCI驱动程序的版本:句柄无效
vmware安装centos7 输入ifconfig出现ens33,没有eth0
Linux常用命令
帮助文档:man 命令:man是manual 或者 命令 --help
-a:显示指定目录下所有的文件,包括隐藏文件
-l:以列表的方式显示文件的详细信息
-h:配合-l以人性的方式显示文件大小
ls:显示目录内容
cd(change directory):跳转路径
pwd(print working directory):显示工作目录的路径名称
touch:创建文件
mkdir:创建文件夹
clear:清空
cat:查看文件,同时查看两个文件重定向到一个文件,命令:cat 1.txt 2.txt > xxx.txt将两个文件合成一个
more:分屏查看文件
history:查看历史命令
find:搜索文件,格式find 路径 选项(-name,-size等) 内容
如find ./ -name “*.txt” 意思为在当前目录下找以txt结尾的
如find ./ -size +4k -size -5M 意思为在当前目录下找大于4k小于5M的文件
如find / -size +500M -size -1G 意思为在根目录下找大于500M小于1G的文件
grep:在文件中搜索内容,-n是显示行数,-v是不包含,^开头符,$结尾符。
如grep “ntfs” xxx.txt就是在xxx.txt内容中搜素ntfs,grep “^ntfs” xxx.txt就是在xxx.txt内容中搜素ntfs开头的
mv:移动或者重命名
tree:以树的形式查看文件
rm:删除文件,删除文件夹用rm 文件夹名 -r
[-r]指示rm将参数中列出的全部目录和子目录递归地删除;
[-f]忽略不存在的文件,强制删除,不给出提示
[-i]进行交互式删除,即提示yes或no
rmdir:删除文件夹,文件夹不为空则用rm -r
cp(copy):复制,拷贝文件夹copy A gebilaowang/ -r。
ln -s 1.txt 1-softlink.txt:软链接,依赖于原文件,原文件删除则软链接文件看不到,相当于windows的快捷方式
ln 1.txt 1-hardlink.txt:硬链接,相当于复制粘贴
查看设备情况:
ps -aux;top;htop:查看当前运行情况,相当于Windows的任务管理器,杀进程用kill PID
df -h:查看硬盘空间使用情况
du -h:查看当前路径空间使用情况
free -m:查看当前内存情况,-m单位是兆,-g单位是G
ifconfig:相当于Windows的ipconfig,查看网络信息
ip addr:[CentOS 7] 相当于Windows的ipconfig,查看网络信息
对用户和组进行操作(体现ubuntu多用户):
sudo useradd shuaige -m:添加用户,cat /etc/passwd文件最后一行多个shuaige则添加成功
sudo userdel shuaige:删除用户,[-r]是同时删除主目录
sudo passwd shuaige:对用户设置密码
su shuaige:切换用户
whoami:查看当前用户名
ssh 用户名@IP地址:远程连接用户
su - 用户名:切换用户同时进入所在目录
将普通用户添加sudo权限:sudo usermod -a -G adm 用户名 然后 sudo usermod -a -G sudo 用户名
groupadd 用户名:将用户添加到组中
chown 用户 文件名:将文件更改用户, chown -R userName:userGroup /path
, -R是递归当前目录,即当前目录及所有子目录、子文件,userName是用户名,userGroup是用户组,path是文件夹路径
chgrp 组名 文件名:更改文件获取其他组中的权限
修改文件权限chmod(change mode):
----------:第一位类型:-是文件,d是文件夹
二到四位是拥有者权限u(user);五到七位是组权限g(group);八到十位是其他人权限o(other)
r(4)是可读文件,w(2)是可写文件,x(1)是可执行权限,七种可能
对应二进制000;全开为111
例子:chmod u=x,g=wx,o=rwx 1.txt 等价于 chmod 137 1.txt
意思为拥有者权限为可执行,组权限为可写可执行,其他人可读可写可执行
打包和解包(zcvf-zxvf;jcvf-jxvf):
[-c]:生成档案文件,创建打包文件;
[-x]:解开档案文件,解包
[-v]:列出档案归档解档的详细过程,显示进度;
[-f]:指定档案文件名称,f后面一定是.tar文件,所以必须放选项最后
[-t]:列出档案中包含的文件
打包:tar -cvf xxx.tar *.py 将所有的.py文件打包成xxx.tar
解包:tar -xvf xxx.tar 将xxx.tar解包
#:打包并压缩: tar -zcvf xxx.tar.gz *.py 将所有的.py文件打包并压缩成xxx.tar.gz
tar -jcvf xxx.tar.bz2 *.py 将所有的.py文件打包并压缩成xxx.tar.bz2
#:解压压缩包: tar -zxvf xxx.tar.gz 将xxx.tar.gz压缩包解压
tar -jxvf xxx.tar.bz2 将xxx.tar.bz2压缩包解压
#:解压压缩包并指定路径: tar [-z][-j]xvf xxx.tar.[gz][bz2] -C faze/
压缩后占内存最小的是gz,比gz稍微大一点的是bz2
通配符:*,?,[1-5]跟正则表达式差不多
:重定向,把原本显示在屏幕上的信息存到一个文件中,
如ls -alh > xxx.txt(将信息存到文件中);ls -alh >> xxx.txt(将信息追加到文件中)
vim编辑器:
进入vi时是命令行模式,按字母【i】进入插入模式,这样就可以开始输入文字了;
进入插入模式后,发现输入错误想删除文字则按【ESC】进入命令行模式;
恢复上一次操作:按字母【u】
按任何键都失效,按【Ctrl+Q】恢复正常
在命令行模式下按【:】冒号进入底行模式
: w filename (输入 「w filename」将文章以指定的文件名filename保存)
: wq (输入「wq」,存盘并退出vi)
: q! (输入q!, 不存盘强制退出vi)
linux中巧用ctrl-z后台运行程序
(1) CTRL+Z停止进程并放入后台
(2) jobs 显示当前暂停的进程
(3) bg %N 使第N个任务在后台运行(%前有空格)
(4) fg %N 使第N个任务在前台运行
默认bg,fg不带%N时表示对最后一个进程操作!
练习过的Linux常用命令
命令 | 描述 |
---|---|
hostname | 查看当前系统的主机名 |
whoami | 查看当前登录用户的 |
ifconfig | 查看虚拟机ip |
shutdown -h now | 关机 |
reboot | 重启 |
pwd:[print working directory] | 查看光标所在位置 |
clear | 清屏 |
ls 目录 | 查看指定目录里面的文件或者文件夹 |
touch 文件名 | 创建一个指定的文件 |
mkdir abc | 创建一个文件夹命令 |
cd 目录 | 进入指定的目录 |
tab键 | 命令补全,目录、文件名补全的作用 |
echo “字符串” | 将字符串输出到控制台上 |
Linux目录结构
Linux目录结构:倒树状结构
目录 | 描述 |
---|---|
bin | 可执行命令 |
sbin | 超级管理员使用的命令 |
opt【**】 | 手动安装软件的目录 |
usr【**】 | 默认安装软件的目录 |
tmp【*】 | 临时目录 |
root【**】 | root用户的根目录 |
home【**】 | 普通用户的信息 |
etc 【**】 | 配置文件 |
selinux | 增强linux系统安全的 |
proc | linux内核相关信息 |
boot | 启动程序相关目录 |
mnt | 挂载相关的目录 |
绝对路径:以/开头的路径,称之为绝对路径
相对路径:不是以/开头的路径,称之为相对路径
去任何一个目录,可以使用相对路径,也可以使用绝对路径。涉及到目录切换。
VI编辑器
所有的linux系统都自带了这个vi编辑器。
vi编辑器三种模式:
命令模式:通过命令模式进入到输入模式
输入模式:只有进入这个模式才可以往文件里面写内容。
末行模式:在末行模式退出到控制台!
====================================================== VI编辑器=================================================================
1.vi编辑器是Linux系统中使用最广泛的,而且是默认的文本编辑器
2.文本编辑器的作用:
修改系统配置文件
创建用户信息文件
编辑程序源代码文件
3.VI编辑器的模式(三种):
命令模式:由命令模式进入到输入模式:点击i(o,a,r);由命令模式进入到末行模式 输入:【冒号】
输入模式:由输入模式退出到命令模式:用ESC
末行模式:在末行模式输入(w,q,wq,wq!)就可以退出编辑器了!
4.VI编辑器的使用:
打开或新建文件:vi <file>
编辑文件:i ,或者o ,或者a,或者r
保存文件: :w <file>(有另存为功能)
退出编辑器:
:q(已保存或未更改)
:wq(保存后退出)
:q!(强制退出)
5.命令行模式下:
行内快速跳转:
^ 行首
$ 行尾
w 后一个单词首字母
行间快速跳转:
: set nu 显示行号
: set nonu 取消行号
1G 文件首行
#G 转到#行(#号代表的是数字)
G文件末行
vi [+#] 文件名,光标就会自动到达文件的第#行首! (#表示数字!!!)
在末行模式直接输入:#(#代表的是数字),那么就会直接跳转到第#行!
5.删除操作:
dd 删除光标所在行
3dd 从光标所在行,往下删除三行
d$ 删除光标至行尾
d^ 删除光标至行首
在末行模式直接输入:1,20 d 即可删除第#1行到#2行的所有内容!(#代表的是数字)!
撤销操作: u
6.复制操作:
yy 复制光标所在行
3yy 复制光标所在行及下面2行
y$ 复制光标至行尾
y^ 复制光标至行首
加#,如20yy -----从光标开始计算
在末行模式直接输入:#,$y 即可复制第#行到文尾的所有内容!(#代表的是数字)!
粘贴操作:
p(小p): 粘贴在光标所在行之后
P(大p) 粘贴在光标所在行之前
7.查找与替换(末行命令):
查找:
由”/”或者”?”开始后跟一个word
按n键查找后一个
按N键查找前一个
替换:
在末行模式,%s/被替换单词/替换成哪个单词
虚拟机网络模式
桥接: 虚拟机ip和物理机ip的地址会在同一个网段。
nat连接模式:虚拟机ip和物理机ip不在同一个网段,虚拟机在访问外网的时候,实际是拿着该虚拟机所在的物理机的ip地址去访问外网。
仅主机模式: 虚拟机和物理机可以通信,但是虚拟机不能访问外网。
linux下配置ip地址
命令vi /etc/sysconfig/network-scripts/ifcfg-ethx
,x为0,1,2…
配置完以后重启动服务service network restart
,ip地址就配置好了。
在Cent0S下只有ens33,改为eth0的方法 vmware安装centos7,输入ifconfig出现ens33,没有eth0
在CentOS7下用过的配置:
vi /etc/sysconfig/network-scripts/ifcfg-ens33
图片转文本如下:
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
bootproto=static
IPADDR="192.168.202.129"
PREFIX="24"
GATEWAY="192.168.202.2"
DNS1="8.8.8.8"
IPV6_PRIVACY="no"
ZONE=public
配置完以后重启动服务service network restart
,ip地址就配置好了。
linux常用命令
ls 目录: 查看指定目录里面的文件或者文件夹
ls:查看当前目录【光标所在目录】的文件和文件夹
ls -a 目录:显示指定目录下所有的子文件和子文件夹【包括:隐藏文件】
ls -l 目录:以长输出的方式显示指定目录下的文件和文件夹
注意:在linux系统中所有以.开头的文件都是隐藏文件
在linux系统中.代表当前目录,…/代表当前目录的上一级目录
增删改查
增加:
增加文件: touch 文件名 | vi 编辑器
增加目录: mkdir [-p] 目录名:[递归的] 创建目录
删除: rm -rf 文件|目录
rmdir 目录:删除空目录
修改: 修改文件或者文件夹的位置和名称
复制(cp)
cp [-r] 源文件|源文件夹 目标文件|目标文件夹
剪切(mv)
mv 源文件|源文件夹 目标文件|目标文件夹
查询:
ls 目录:显示一个指定目录下所有的文件和文件夹
查看文件内容:
cat 文件名:查看指定文件的内容【将整个文件的所有内容显示到控制台上】
more 文件名:分屏显示指定文件的内容,最后一屏自动退出
less 文件名:分屏显示指定文件的内容, 最后一屏不自动退出
head [-num] 文件名:查看一个文件最前面几行
tail [-num] 文件名: 查看一个文件最后几行
tail -f 文件名 :实时查看log文件
tail -f 文件名 -n 200 :查看后200行,并监听文件尾部新增内容
查看文件内容中是否含有指定的内容:
cat bcd.txt | grep hello
| : 管道符
grep : 过滤
查看文件位置:find / -name bcd:查找的是文件名中含有bcd的文件或者文件夹
查看文件类型 : file 文件名
touch 文件名: 创建一个指定的文件
mkdir abc : 创建一个文件夹命令
cd 目录: 进入指定的目录
tab键使用: 在linux系统中可以有 命令补全、目录、文件名补全的作用。
echo “字符串”: 将字符串输出到控制台上。
echo “字符串” > 文件名: 将原本输出到控制台上的字符串输出到指定的文件中。[覆盖式重定向]
echo “字符串” >> 文件名: 将原本输出到控制台上的字符串输出到指定的文件中。[追加式重定向]
查看cpu的命令: top 命令
查看磁盘空间大小的命令: df -h
查看内存大小的命令: free -m
hostname:查看当前系统的主机名
whoami:查看当前登录用户的
ifconfig:查看虚拟机ip
shutdown -h now:关机
reboot:重启
pwd:[print working directory] 查看光标所在位置
clear:清屏
查看一个命令如何使用?查看帮助文档
命令 -–help
命令 -h
man 命令:
百度
sync:关机之前,最好将内存中的数据保存到磁盘上
文件权限
-rw-r–r-- 1 root root 481 3月 25 22:44 bcd.txt
属主 属组 文件大小 创建时间 文件名
-rw-r–r–:
第一位:表示文件类型
-表示这是一个普通文件
d表示这是一个目录
l:这是一个连接文件
第二位到第四位:表示当前文件的属主(用户)对该文件的权限
第五位到第七位:表示当前文件的属组(用户组)对该文件的权限
第八位到第十位:表示其它人【既不属于属主、也不属于属组中的用户】对它的操作权限
读写可执行对应二进制111,即读4,写2,可执行1
r:读的权限
w:写的权限
x:执行权限
-:没有权限
root用户:不受权限限制,是一个超级的存在。
修改文件权限[两种方式]:
chmod u/g/o/a (+|-) rwx 文件(夹)名
chmod 777 文件名
4.文件权限设置:
更改文件权限:chmod [ugoa][+ - =][rwx] <file> (用逗号分隔)
更改文件所有者:chown <owner> <file>
更改文件所属组:chgrp <group> <file>
同时更改所有者和所属组:chown <owner:group> <file>
用户操作
添加用户:useradd <username>
设置密码:passwd <username>
切换用户:su <username> 注意:输入的是你将要切换到目标用户的密码
删除用户:userdel [-r] <username>
禁止/解禁用户:usermod [-L | -U] <username>
切换用户:su <username> 注意:输入的是你将要切换到目标用户的密码
查看当前用户:whoami / who am i
查看所有已经登录的用户:who
查看所有登录用户记录:last
强退指定用户:pkill -kill -t pts/3【pts/3从who命令下获取】 或 pkill -9 -u zhangsan
扩展:centos下kill、killall、pkill命令区别
kill命令
pkill命令
kill是用来终止进程的,首先可以通过ps aux查看系统有哪些进程正在运行。
1.用kill来杀死某一个进程#kill,加选项-9,加PID,表示立即结束进程编号为PID的这个进程 # -1,加PID,表示重启某个进程 # -15,加PID,表示安全结束某个进程 #kill -9 PID #下面表示杀死进程PID为2899的进程 [root@fazehan~]# kill -9 2899
2.用killall杀死一类进程
#killall,加选项-9,加服务名, 表示杀死该服务的所有进程 # -1,加服务名,表示重启该服务的所有进程 #killall -9 service #下面表示杀死httpd服务的所有进程 [root@fazehan~]# killall -9 httpd
3.用pkill踢出某个终端
#pkill,加选项-9,加终端号,表示踢出该终端 # -1,加终端号,表示重启该终端 #pkill -9 pts/3 #下面表示提出我的远程登录终端pts/3 [root@fazehan~]# pkill -9 -t pts/1 [root@fazehan~]# pkill -9 -u zhangsan
用户信息文件: /etc/passwd 可通过cat /etc/passwd 进行查看,字段之间用冒号隔开,格式为: 用户名:口令:用户标识符号:组标识符号:注释性描述:宿主目录:命令解释器
用户密码文化:/etc/shadow 可通过cat /etc/shadow进行查看
history:查看你输入过的命令[1000]
用户组操作
增加用户组:groupadd <groupname>
创建用户时指定用户初始组:useradd -g <initial group> <username>
删除用户组:groupdel <groupname>
修改用户所在的初始组:usermod -g <groupname> <username>
查看用户所属组:groups <username>
组信息:/etc/group 格式为:组名:组口令:GID:组成员 组密码信息在/etc/gshadow文件中保存!
软硬链接
软链接文件:类似于windows上的快捷方式, ln -s 源文件 链接文件; 链接文件完全依赖于源文件,原文件 [更改 | 删除] 软链接文件 [被更改 | 被删除]
硬链接文件:类似于windows上的复制,但是又有区别, ln 源文件 链接文件; 链接文件不完全依赖于源文件,原文件 [更改 | 删除] 硬链接文件 [被更改 | 不被删除]
rpm安装使用
yum安装mysql 无排版附件
yum install 软件名
以安装mysql为例
第一步进入root用户下: su root
第二步安装mysql客户端、服务器端、开发用到的库以及包含文件: 另外,使用yum list mysql查看当前机子上可用的mysql安装
注意:centos7下会报yum install mysql-server没有可用包,解决方法:
- yum -y install wget
- wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
- rpm -ivh mysql-community-release-el7-5.noarch.rpm
- yum install mysql-server
yum -y install mysql # 安装客户端
yum -y install mysql-server # 安装服务器端
yum -y install mysql-devel # 安装开发用到的库以及包含文件
yum list mysql* # 查看当前机子上可用的mysql*安装
第三步修改配置信息,添加节点:
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
lower_case_table_names=1
第四步重启mysqld服务: service mysqld restart/stop/start
第五步配置超级用户名和密码: mysqladmin -u root password 123456
注意:【mysql版本为在5.1.73,5.6以后的高版本解决方法mysql下的user表为空】执行这一步操作可能会出现以下错误:
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
解决方法:
进入mysql服务配置文件vi /etc/my.cnf
在[mysqld]下加入skip-grant-tables
重启mysql服务service mysqld restart
在终端下进入mysql,无需密码:mysql -uroot -p
在mysql下执行以下命令:
查看所有数据库
mysql>show databases;
使用mysql数据库
mysql>use mysql;
查看有多少表
mysql>show tables;
查看user表有没有数据
mysql>select * from user;
向user表插入root用户
mysql>INSERT INTO user (Host,User,Password) VALUES( 'localhost', 'root',password( '123456'));
更新root用户权限
mysql>update user set Host='localhost',select_priv='y', insert_priv='y',update_priv='y',Alter_priv='y',delete_priv='y',create_priv='y',drop_priv='y',reload_priv='y',shutdown_priv='y',Process_priv='y',file_priv='y',grant_priv='y',References_priv='y',index_priv='y',create_user_priv='y',show_db_priv='y',super_priv='y',create_tmp_table_priv='y',Lock_tables_priv='y',execute_priv='y',repl_slave_priv='y',repl_client_priv='y',create_view_priv='y',show_view_priv='y',create_routine_priv='y',alter_routine_priv='y',create_user_priv='y' where user='root';commit;
删除在[mysqld]下加入的skip-grant-tables
重启mysql服务service mysqld restart
此时就可以正常的输入密码进入了
配置文件详细内容:[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 skip-grant-tables # 这是新增的 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [mysql] default-character-set=utf8 [mysqld] character-set-server=utf8 lower_case_table_names=1
解压.tar.gz格式压缩包配置(安装JDK和Tomcat) 无排版附件
以安装jdk为例(tomcat类似,自备包,附tomcat环境配置):
第一步将jdk.tar.gz包通过sftp传给linux服务器的opt文件夹: 通过Xftp软件,opt文件夹是手动安装放置的目录,sftp传输是基于ssh,端口号为22
第二步在linux服务器的opt文件夹下创建java文件夹: mkdir /opt/java/
第三步在/opt下将.tar.gz文件指定解压到/opt/java: tar -zxvf jdk-8u201-linux-x64.tar.gz -C /opt/java/
第四步配置环境变量: vi /etc/profile
,vim到最后一行指令为:$
;下一屏指令为CTRL+F(forward)
;上一屏为CTRL+B(back)
jdk环境变量配置:
export JAVA_HOME=/opt/java/jdk1.8.0_201
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
tomcat环境变量配置:
export CATALINA_HOME=/opt/tomcat/apache-tomcat-7.0.65
export PATH=$PATH:$CATALINA_HOME/bin
第五步刷新配置文件: source /etc/profile
第六步测试: 测试java环境配置是否成功:java -version
测试tomcat环境配置是否成功:startup.sh
,查看tomcat是否已经启动:ps -ef |grep tomcat
面试使用加分的常见命令
ps -ef | grep 服务名
: ps(process status:进程状态)。-e:显示所有进程,-f:以特定格式显示。|管道符,grep:过滤,在内容中查找。
top:查看cpu
df -h:查看磁盘大小
free -m:查看内存大小
find / -name bcd:查找文件名中含有bcd的文件或者目录
cat 文件 | grep 字符串:查看一个文件的内容是否含有指定的字符串信息
查看一个服务是否启动的:
netstat -an | grep 端口号 // 该端口号必须为LISTENING(监听)才算启动
ps -ef | grep 服务名 : //这种方法可以看到自己输入的这个的命令,结果最少为2条,才算已经启动。ps(process status:进程状态)。-e:显示所有进程,-f:以特定格式显示。
service 服务名 status
杀死一个进程:
Kill -9 pid // 杀死pid为pid的进程
查看端口是否启动:netstat -nap | grep 端口号
详细说明: Linux下查看进程和端口信息 以及 netstat用法
说明: l:listening、n:numeric、 t:tcp、u:udp、 p:program
如查看8080的端口占用信息:netstat -nap | grep 8080
或netstat -lntup | grep 8080
查看防火墙开放的端口号:iptables -L -n
查看程序对应的进程号:ps aux | grep redis
编辑防火墙配置文件:vim /etc/sysconfig/iptables
nginx启动:cd /usr/local/nginx/sbin
./nginx
更详细的说明:Nginx学习笔记
redis启动命令:./redis-service redis-config
开放防火墙端口的命令
更详细的说明:linux开放指定端口命令
1、开启防火墙
systemctl start firewalld
2、开放指定端口
firewall-cmd --zone=public --add-port=1935/tcp --permanent
命令含义:
–zone #作用域
–add-port=1935/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
3、重启防火墙
firewall-cmd --reload
4、查看端口号
netstat -ntlp //查看当前所有tcp端口·
netstat -ntulp | grep 2181 //查看所有1935端口使用情况·
Docker 教程
Docker 清理命令
转载自:https://www.runoob.com/w3cnote/docker-clear-command.html
杀死所有正在运行的容器
docker kill $(docker ps -a -q)
删除所有已经停止的容器
docker rm $(docker ps -a -q)
删除所有未打 dangling 标签的镜像
docker rmi $(docker images -q -f dangling=true)
通过镜像的id来删除指定镜像
docker rmi <image id>
删除所有镜像
docker rmi $(docker images -q)
为这些命令创建别名
# ~/.bash_aliases
# 杀死所有正在运行的容器.
alias dockerkill='docker kill $(docker ps -a -q)'
# 删除所有已经停止的容器.
alias dockercleanc='docker rm $(docker ps -a -q)'
# 删除所有未打标签的镜像.
alias dockercleani='docker rmi $(docker images -q -f dangling=true)'
# 删除所有已经停止的容器和未打标签的镜像.
alias dockerclean='dockercleanc || true && dockercleani'
系统时间设置
情景:安装ElasticSearch过程中报错 curl: (60) Peer's Certificate has expired
解决办法:linux时间不对,按下面步骤执行
# 查看系统时间
date
# 查看系统硬件时间(hardwareclock)
hwclock
# 安装ntpdate服务
yum install -y ntpdate
# 同步时间
ntpdate time.nist.gov
# 如果上面time.nist.gov服务器同步不了,可以换下面几个时间服务器试试:
# time.nist.gov
# time.nuri.net
# 0.asia.pool.ntp.org
# 1.asia.pool.ntp.org
# 2.asia.pool.ntp.org
# 3.asia.pool.ntp.org
# 同步时间成功后查看系统时间
date
# 同步时间成功后调整硬件时间
hwclock -w
# 查看系统硬件时间
hwclock
# 定时执行时间同步任务,所以我们利用crontab -e 来添加定时任务
* */1 * * * root ntpdatetime.nuri.net;hwclock -w
# 手动设置时间方法 date -s "2020-06-25 13:11:30"
top命令
原文链接:Linux top命令的用法详细详解
查看多核CPU命令
mpstat -P ALL 和 sar -P ALL
说明:sar -P ALL > aaa.txt 重定向输出内容到文件 aaa.txt
top命令经常用来监控Linux的系统状况,比如cpu、内存的使用,程序员基本都知道这个命令,但比较奇怪的是能用好它的人却很少,例如top监控视图中内存数值的含义就有不少的曲解。
top进入视图
第一行:
10:01:23 — 当前系统时间
126 days, 14:29 — 系统已经运行了126天14小时29分钟(在这期间没有重启过)
2 users — 当前有2个用户登录系统
load average: 1.15, 1.42, 1.44 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。
load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
第二行:
Tasks — 任务(进程),系统现在共有183个进程,其中处于运行中的有1个,182个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。
第三行:cpu状态
6.7% us — 用户空间占用CPU的百分比。
0.4% sy — 内核空间占用CPU的百分比。
0.0% ni — 改变过优先级的进程占用CPU的百分比
92.9% id — 空闲CPU百分比
0.0% wa — IO等待占用CPU的百分比
0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比
0.0% si — 软中断(Software Interrupts)占用CPU的百分比
在这里CPU的使用比率和windows概念不同,如果你不理解用户空间和内核空间,需要充充电了。
第四行:内存状态
8306544k total — 物理内存总量(8GB)
7775876k used — 使用中的内存总量(7.7GB)
530668k free — 空闲内存总量(530M)
79236k buffers — 缓存的内存量 (79M)
第五行:swap交换分区
2031608k total — 交换区总量(2GB)
2556k used — 使用的交换区总量(2.5M)
2029052k free — 空闲交换区总量(2GB)
4231276k cached — 缓冲的交换区总量(4GB)
这里要说明的是不能用windows的内存概念理解这些数据,如果按windows的方式此台服务器“危矣”:8G的内存总量只剩下530M的可用内存。Linux的内存管理有其特殊性,复杂点需要一本书来说明,这里只是简单说点和我们传统概念(windows)的不同。
第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。
如果出于习惯去计算可用内存数,这里有个近似的计算公式:第四行的free + 第四行的buffers + 第五行的cached,按这个公式此台服务器的可用内存:530668+79236+4231276 = 4.7GB。
对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。
第六行是空行
第七行以下:各进程(任务)的状态监控
PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)
多U多核CPU监控
在top基本视图中,按键盘数字“1”
进程字段排序
默认进入top时,各进程是按照CPU的占用量来排序的。可通过键盘指令来改变排序字段,比如想监控哪个进程占用MEM最多,我一般的使用方法如下:
-
敲击键盘“b”(打开/关闭加亮效果)
-
敲击键盘“x”(打开/关闭排序列的加亮效果)
-
通过”shift + >”或”shift + <”可以向右或左改变排序列
-
敲击“f”键,top进入另一个视图,在这里可以编排基本视图中的显示字段
有””并且标注为大写字母的字段是可显示的,没有””并且是小写字母的字段是不显示的。如果要在基本视图中显示“CODE”和“DATA”两个字段,可以通过敲击“r”和“s”键
“回车”返回基本视图,可以看到多了“CODE”和“DATA”两个字段
top命令的补充
top命令是Linux上进行系统监控的首选命令,但有时候却达不到我们的要求,比如当前这台服务器,top监控有很大的局限性。这台服务器运行着websphere集群,有两个节点服务,就是【top视图 01】中的老大、老二两个java进程,top命令的监控最小单位是进程,所以看不到我关心的java线程数和客户连接数,而这两个指标是java的web服务非常重要的指标,通常我用ps和netstate两个命令来补充top的不足。
监控java线程数:
ps -eLf | grep java | wc -l
监控网络客户连接数:
netstat -n | grep tcp | grep 侦听端口 | wc -l
Linux管道符和多命令执行符
管道符“|”的作用
命令格式:命令A|命令B,即命令1的正确输出作为命令B的操作对象(下图应用别人的图片)
-
例如:ps aux | grep “test” 在 ps aux中的结果中查找test。
-
例如: find . -name “*.txt” | xargs grep “good” -n --color=auto 把find的结果当成参数传入到grep中,即在那些文件内部查找good关键字。
多命令执行符
例:ls;date;pwd 会按照顺序依次执行
ls && echo yes || echo no
ls命令执行正确打印yes执行错误打印no
sshpass命令使用
原文链接:sshpass命令使用和无法拷贝原因分析
一、sshpass安装
yum install sshpass
sshpass -V
二、sshpass命令使用
#1、直接远程连接某主机
sshpass -p {密码} ssh {用户名}@{主机IP}
#2、远程连接指定ssh的端口
sshpass -p {密码} ssh -p ${端口} {用户名}@{主机IP}
#3、从密码文件读取文件内容作为密码去远程连接主机
sshpass -f ${密码文本文件} ssh {用户名}@{主机IP}
#4、从远程主机上拉取文件到本地
sshpass -p {密码} scp {用户名}@{主机IP}:${远程主机目录} ${本地主机目录}
#5、将主机目录文件拷贝至远程主机目录
sshpass -p {密码} scp -r ${本地主机目录} {用户名}@{主机IP}:${远程主机目录}
sshpass -p "密码" scp -r /var/www/html/test.txt root@ip地址:/web/website/Test/
#6、远程连接主机并执行命令
sshpass -p {密码} ssh -o StrictHostKeyChecking=no {用户名}@{主机IP} 'rm -rf /tmp/test'
-o StrictHostKeyChecking=no :忽略密码提示
#7、将主机目录拷贝至远程主机目录
sshpass -p {密码} scp -r {用户名}@{主机IP}:${远程主机目录} ${本地主机目录}
sshpass -p "111111" scp -r /var/www/html/test/ root@ip地址:/web/website/Test/
sshpass -p "111111" scp -o StrictHostKeyChecking=no -r /var/www/html/test/ root@ip地址:/web/website/Test/
避坑注意:
本人首次使用的时候,一直无法把文件转移到指定目录,也没有任何报错,后来使用了
scp -r {用户名}@{主机IP}😒{远程主机目录} ${本地主机目录} 即把scp前面的先去掉,然后输入远程目标主机的密码,然后就可以使用了sshpass -p {密码} scp -r了。。。。。
大家引以为戒。
解决办法: scp 命令后加上参数 -o StrictHostKeyChecking=no
curl排查耗时
更详细的文章 curl-w参数详解
curl -w 'dns_resolution:%{time_namelookup}\nconnect_time:%{time_connect}\nappconnect_time:%{time_appconnect}\npretransfer_time:%{time_pretransfer}\nstarttransfer_time:%{time_starttransfer}\ntotal_time:%{time_total}\n' https://www.baidu.com
dns_resolution: %{time_namelookup} - 这表示DNS解析时间,即从发起请求到获取域名对应的IP地址所花费的时间。
connect_time: %{time_connect} - 连接时间,这是从DNS解析完成后到建立TCP连接所花费的时间。
appconnect_time: %{time_appconnect} - 应用层连接时间,对于HTTPS来说,这通常是指从TCP连接建立到SSL/TLS握手完成所花费的时间。
pretransfer_time: %{time_pretransfer} - 这是从发起请求到准备开始传输数据(如开始发送HTTP请求头部)所花费的时间。time_pretransfer指的是从请求开始到服务器准备好发送数据所需的时间,它包含了time_connect和time_appconnect(应用层连接时间,例如SSL/TLS握手的时间)
starttransfer_time: %{time_starttransfer} - 这是从发起请求到接收到第一个字节的数据所花费的时间,这通常是在服务器开始响应的时间点。
total_time: %{time_total} - 总时间,这是从发起请求到接收完所有数据所花费的总时间,包括了所有的上述步骤。
所有时间都是秒单位
DNS 解析查询时间:time_namelookup【 0.004146】
TCP 建立连接时间:time_connect【0.013002】 - time_namelookup【0.004146】
服务器处理时间:time_starttransfer【0.02542】-time_pretransfer【0.013039】
内容传输时间:time_totle【0.072124】-time_starttransfer【0.02542】
- DNS 解析查询时间 (time_namelookup):从发起请求到DNS解析完成所需的时间。在这个例子中是0.004146秒。
- TCP 建立连接时间 (time_connect):从DNS解析完成到TCP连接建立所需的时间。计算公式是time_connect - time_namelookup。在你给出的例子中,time_connect是0.013002秒,减去time_namelookup(0.004146秒),得到的是TCP连接建立所需的时间,大约是0.008856秒。
- 服务器处理时间 (time_starttransfer):从TCP连接建立完成到接收到第一个字节的响应数据之间的时间。计算公式是time_starttransfer - time_pretransfer。在这个例子中,time_starttransfer是0.02542秒,time_pretransfer是0.013039秒,所以服务器处理时间是大约0.012381秒。
- 内容传输时间 (time_total与time_starttransfer之间的差值):从接收到第一个字节的响应数据到接收完所有数据所需的时间。计算公式是time_total - time_starttransfer。在这个例子中,time_total是0.072124秒,time_starttransfer是0.02542秒,所以内容传输时间是大约0.046704秒。
更多推荐
所有评论(0)