Liunx常用命令


常用命令

查看当前目录 pwd
清屏 clear
查看文档 man 命令
结束进程 q
清屏 clear
mut(挂载) mut[设备名称][挂载点]
查询用户 cat /etc/passwd
查询组 cat /etc/group
筛选
    grep mysql
    cat /etc/group | grep mysql
cd
    打开指定目录: cd[目录名称]
    打开当前用户的主目录: cd ~
    返回上级目录: cd..
    返回进入目录: cd -
    打开根目录: cd /
ls
    以列的方式查看当前目录下的文件列表: ls -l,ll,ls -ll
    查看当前目录下所有的文件(包括隐藏文件): ls -a (隐藏文件前面带点)
    以列表的方式查看当前目录下的所有文件: ls -la
mkdir
    新建文件目录: mkdir文件夹名称
    递归新建多级目录: mkdir -p文件夹名称
rmkdir(删除文件目录命令):rmkdir[选项]目录名称
    删除指定目录: rmkdir 目录名称
rm(删除文件或目录) rm[选项]档案或目录
    强制删除文件或目录:rm -rf 目录或文件
    在删除前询问是否确认删除:rm -ri 目录或者文件
cp(复制文件或目录命令) cp[选项][目录][名称][目录2名称]
    复制目录1的所有的文件和文件夹到目录2: cp -r[目录1][目录2]
    执行复制操作是覆盖原有目录前询问用户:cp -ri[目录1][目录2]
mv(移动文件、修改文件名命令) mv[选项][源文件或目录][目标文件或目录]
    将文件夹1名称更改为文件2: mv 文件1 文件2
    将目录1的文件移动到目录2: mv 目录1 目录2
1.touch(创建文件命令) touch 文件名称
2.vi/vim(查看、编辑文件) vi 文件名
    1)命令模式
        L: 光标以至屏幕最后一行
        space: 光标右移一个字符
        backspace:光标左移一个字符
        N+:光标向上移动N行
        n+:光标向下移动n行
    2)输入模式 Esc
        a,i,r,o,A,I,R,O:编辑模式
        dd:删除光标当前行
        ndd:删除n行
    3)末行模式 :
        :wq!   保存并退出
        :q!    强制退出
        :s/字符串1/字符串2      将文件中出现的字符串1替换成字符串2
        :set nu    显示所有的行号
3.cat(查看、编辑文件命令)  cat[-参数选项]文件名称
    显示一个小的文件的内容: cat 文件名称
    创建并打开一个新的文件: cat >文件名称
4.head(查看文件开头内容,默认10行) head[参数][文件]
    head -n文件名称
5.tail(查看文件结尾内容命令) tail[-参数选项]文件名称
    动态加载某个文件的内容(常用于查看日志文件): tail -f文件名称
    展示文件最后几行的数据: tail -n 行数文件名称

查询主机信息
    uname -a
    cat /proc/version
exit        退出
pwd            查看当前目录
cd        打开目录
cd ..        返回上一级
cd /        返回根目录
ls        查看当前目录下文件不含隐藏文件
ls -a:        查看当前目录下文件 含 文件
ll        列表的方式显示文件 详细信息
rm -rf        删除文件 直接删除  不建议使用
rm -ri t.java    删除文件 询问用户 y确定 n不删除
touch Test.java    创建文件
mkdir         创建文件夹
cp t.java ../    复制
gedit 文件名 查看编辑文件
vi t.java    编辑文本 按 i,a 进入编辑状态     Esc 退出编辑
        :进入命令模式    wq或x 保存并退出    q! 退出不保存  w保存
head t.java    从头显示文本 默认10 行
head -n     置顶文件开始的几行
tail        :从文件末尾显示文本
tail -f        多态加载某个文件的内容
tail -n        文件结尾N行内容
cat 看全文
man touch 文档  q退出
su - root    当前用户退出 root 进入  需要密码 低-->高
su - lz     高到底  不需要密码
whoami          当前用户
groups        用户属于的 用户组
id:        查看当前用户UID和GID
useradd 用户名     添加用户
useradd –u tom 600    添加用户并指定UID 500以上
passwd 1z 123   修改用户密码
usermod –l [新用户名][ 旧用户名]:修改用户登录名
usermod –g [新组名称][用户名]:修改用户所属分组
groupadd [组名]:添加分组
groupadd –g  [组GID][ 组名]:添加分组并指定GID
make distclean 清空上次安装
ps -ef|grep redis(服务名) 查看进程
rpm -qa|grep iptables(软件名) 查看防火墙是否安装
rpm -qal|grep iptables(软件名) 查看防火墙(软件)的安装位置
whereis ruby(软件名) 查看软件的安装目录,必须以yum方式安装的
chkconfig 设置开机自启
du -h --max-depth=1,这个命令用于查看当前目录,哪个文件占用最大
du -h --max-depth=1 /home/* 列出home下面所有一级目录的一级目录文件大小
du -sh * 这个命令也用于查看当前目录下各文件及文件夹占用大小
du -sh / 查询/目录多大
du -sh /* 查询/下所有目录多大

查看分区的文件系统
df -T
df -h

ss -ntlp | grep nginx
#确认一下 80/tcp  跟 443/tcp 是否被nginx所使用

./bin/startup.sh ;tail -f logs/catalina.out 启动tomcat
reboot 重启系统

查看selinux状态: getenforce
Enforcing: 表示开启
Permissive:表示关闭

临时关闭selinux:setenforce 0
永久关闭selinux(设置完成需要重启):
vim /etc/selinux/config
修改为:SELINUX=disabled

用户操作命令

查看当前用户密码
    vim /etc/passwd
    vim /etc/shadow

1.su(切换用户命令) su[用户名]或su -[用户名] sudo(以root权限运行)
2.whoami(查看当前登录用户命令)  whoami
3.groups(查看当前用户所分属分组命令groups) groups
  创建组 groupadd
4.id(查看当前用户UID和GID) id
5.useradd(添加新用户命令)  useradd[选项][用户名]
    -c 代表comment指定一段注释性描述
    -d 指定用户主目录
    -g 指定用户所属的用户组
    -G 指定用户所属的附加组
    -u 指定用户的用户名
    -r 创建系统账户
    添加用户: useradd 用户名
    添加用户并指定UID: useradd -u 指定的UID用户名(最好>500)
6.passwd(修改用户密码命令) passwd[选项][参数]
    修改密码: passwd 用户名 密码
    -d 删除密码,仅有系统管理员才能使用
    -f 强制执行
    -k 设置只有密码过期后才能更新
    -l 锁住密码
    -s 列出密码的相关信息,仅有系统管理员才能使用
    -u 解开已上锁的帐号
7.userdel(删除用户) userdel[选项][用户名]
    删除用户: userdel 用户名
    -r 删除用户以及其登录日志等信息
    -f 强制删除用户,即使用户已登录
8.usermod(修改用户信息)
    修改用户登录名: usermod -l 新用户名 旧用户名
    修改用户所属分组: usermod -g 新组名称 用户名
    -c 修改用户帐号的备注文字
    -d 修改用户登录时的目录
    -e 修改帐号的有效期
    -f 修改密码过期后多少天关闭帐号
    -g 修改用户所属的群组
    -G 修改用户所属附属组
    -l 修改用户帐号名称
    -L 锁定用户密码,使用密码无效
    -u 修改用户id
    -U 解除密码锁定
9.groupadd(添加用户组) groupadd[选项][组名称]
    修改用户登录名: groupadd 组名
    修改用户所属分组: groupadd -g组 GID 组名
    -g 指定工作组的id
    -r 创建系统工作组
    -o 允许添加组ID不唯一的工作组

权限操作

权限介绍

drwxrwxr-x. 3 spz spz 21 8月   9 22:16 Learning
​    -rwxrw-rw-. 1 spz spz 3399 8月  25 12:05 Liunx命令.txt
​    d:代表是目录
​    -:代表文件
​    rwx:r(读),w(写),x(执行)
​    r -x:代表同组用户具有读、执行的权限,但是没有写的权限
​    更变权限 chmod[选项][参数]
​    -c 显示指令执行过程,但只返回更改的部分
​    -f 不显示错误信息
​    -r 递归授权
​    -v 显示指令执行过程

赋予权限

chmod   ===》修改文件权限
​    文件格式有两种格式:数字法、字母法
​    数字法:
​    r ===》读取权限,数字代号为 "4"
​    w ===》写入权限,数字代号为 "2"
​    x ===》执行权限,数字代号为 "1"
​    - ===》不具任何权限,数字代号为 "0"
​    字母法:
​    u   ===》 user 表示该文件的所有者
​    g   ===》 group 表示与该文件的所有者属于同一组( group )者,即用户组
​    o   ===》other 表示其他以外的人
​    a    ===》all 表示这三者皆是
chmod 777 test.sh 赋予文件可执行权限
755 全部权限
chown -R mysql:mysql /usr/local/mysql
chown -R mysql mysql/
chgrp -R mysql mysql/

赋予 root 权限

方法一: 修改 /etc/sudoers 文件,找到下面一行,把前面的注释(#)去掉
​        ## Allows people in group wheel to run all commands
​        %wheel    ALL=(ALL)    ALL
​        然后修改用户,使其属于root组(wheel),命令如下:
​        #usermod -g root tommy
​        修改完毕,现在可以用tommy帐号登录,然后用命令 su – ,即可获得root权限进行操作。
​    方法二: 修改 /etc/sudoers 文件,找到下面一行,在root下面添加一行,如下所示:
​        ## Allow root to run any commands anywhere
​        root    ALL=(ALL)     ALL
​        tommy   ALL=(ALL)     ALL
​        修改完毕,现在可以用tommy帐号登录,然后用命令 su – ,即可获得root权限进行操作。
​    方法三: 修改 /etc/passwd 文件,找到如下行,把用户ID修改为 0 ,如下所示:
​        tommy:x:500:500:tommy:/home/tommy:/bin/bash
​        修改后如下 tommy:x:0:500:tommy:/home/tommy:/bin/bash
​        保存,用tommy账户登录后,直接获取的就是root帐号的权限。
友情提醒:虽然方法三看上去简单方便,但一般不推荐使用,推荐使用方法二。

进程操作

1.ps(查看进程命令) ps -ef|grep[进程关键词]
2.kill(杀掉进程) kill -9[PID]

服务操作

开启服务
    service 服务名 start
    启动SSH服务 service sshd start
重启服务
    service 服务名 restart
    启动SSH服务 service sshd restart
关闭服务
    service 服务名 stop
    关闭SSH服务 service sshd stop

常用的软件安装方式

1.源码安装

(1)tar(解压)安装 tar[选项][压缩包]
            -c 指定特定目录压缩
            -x 从备份文件中还原文件
            -t 列出备份文件内容
            -r 添加文件到已经压缩的文件
            -z 有gzip属性的(后缀是gz的)
            -j 有bz2属性的(后缀是bz的)
            -Z 有cpmpress属性的
            -v 显示所有过程
            -O 将文件解压到标准输出
            -f 使用文档名称
            解压gzip包: tar -zxvf [包名]
            解压bz包: tar -jxvf [包名]
            解压普通包: tar -xvf [包名]
(2)进入源码目录
    ./configure  --prefix=安装位置  --with 安装参数 --sysconfdir=配置文件目录
    make
    make install

2.rpm(软件包)安装 rpm[选项][软件包]

-ivh 安装显示安装进度
-Uvh 升级软件包
-qpl 列出rpm软件包内的文件信息
-qpi 列出rpm软件包的描述信息
-qf 查找指定文件属于那个rpm软件包
-Va 校验所有的rpm软件包,查找丢失的文件
-e 删除包
-qa 查找已经安装的rpm包

查询是否已经安装了某软件包:rpm -qa|grep [软件包关键字]
查询软件安装位置: rpm -ql 软件关键字
卸载已经安装的软件包: rpm -e 软件包全名
安装软件包并查看进度: rpm -ivh 软件包路径
批量卸载: rpm -qa | grep 服务名 | xargs rpm -evh --nodeps

3.yum(在线)安装

yum list //列出所指定的软件包,后可以加上你想查找的软件包的名字
yum list installed //列出所有已安装的软件包
yum list installed | grep 软件包名
yum info installed //列出所有已安裝的软件包信息
yum install 软件包名 安装
yum remove 软件包名 卸载

修改 yum 的下载源

1. 备份本地yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak
2.获取阿里yum源配置文件
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
3.服务器的包信息下载到本地电脑缓存
yum makecache
4.更新cache
yum -y update

下载文件

curl -L https://portainer.io/download/portainer-agent-stack.yml -o /usr/local/docker/portainer/portainer-agent-stack.yml
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

各种包操作命令

tar 命令

解包:tar zxvf FileName.tar
打包:tar czvf FileName.tar DirName

gz 命令

解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName.tar.gz 和 .tgz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
压缩多个文件:tar zcvf FileName.tar.gz DirName1 DirName2 DirName3 ...

bz2 命令

解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName

bz 命令

解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
压缩:未知.tar.bz
解压:tar jxvf FileName.tar.bz

Z 命令

解压:uncompress FileName.Z
压缩:compress FileName.tar.Z
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName

zip 命令

解压:unzip FileName.zip
压缩:zip FileName.zip DirName

搜索命令

find

find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。
    expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。
        -mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
        -amin n : 在过去 n 分钟内被读取过
        -anewer file : 比文件 file 更晚被读取过的文件
        -atime n : 在过去n天内被读取过的文件
        -cmin n : 在过去 n 分钟内被修改过
        -cnewer file :比文件 file 更新的文件
        -ctime n : 在过去n天内被修改过的文件
        -empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
        -ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写
        -name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
        -size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。-type c : 文件类型是 c 的文件。
        d: 目录
        c: 字型装置文件
        b: 区块装置文件
        p: 具名贮列
        f: 一般文件
        l: 符号连结
        s: socket
        -pid n : process id 是 n 的文件
        你可以使用 ( ) 将运算式分隔,并使用下列运算。
        exp1 -and exp2
        ! expr
        -not expr
        exp1 -or exp2
        exp1, exp2
示例    find / -name  '文件名'

centos6

关闭防火墙
service iptables stop
永久关闭防火墙
chkconfig iptables off
检测防火墙状态
service iptables status

开放端口的方法:

方法一:命令行方式

1.开放端口命令: /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
c.d/init.d/iptables save
2.重启服务:/etc/init.d/iptables restart
3.查看端口是否开放:/sbin/iptables -L -n

方法二:直接编辑/etc/sysconfig/iptables 文件

 1.编辑/etc/sysconfig/iptables文件:vi /etc/sysconfig/iptables
   加入内容并保存:-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
  2.重启服务:/etc/init.d/iptables restart
  3.查看端口是否开放:/sbin/iptables -L -n

centos7

systemctl list-unit-files|grep enabled 查询所有自启软件

systemctl start firewalld.service 开启防火墙
systemctl restart firewalld.service 重启防火墙
systemctl stop firewalld.service 关闭防火墙
systemctl disable firewalld.service 禁止开机自启防火墙
systemctl enable firewalld.service  开机自启防火墙

firewall-cmd
    --zone 作用域
    --add-port=6379/tcp 添加端口,格式为:端口/通讯协议
    --permanent 写入配置文件永久生效,没有此参数重启后失效
firewall-cmd --state 查询防火墙状态
firewall-cmd --reload 重启防火墙

限制port
firewall-cmd --list-all 查询防火墙中的所有端口所有
firewall-cmd --query-port=6379/tcp 查看端口是否开启
firewall-cmd --add-port=6379/tcp 暂时开启端口
firewall-cmd --remove-port=6379/tcp 暂时关闭端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent 永久开启端口
firewall-cmd --zone=public --add-port=6379-4000/tcp --permanent 永久开启端口
firewall-cmd --zone=public --remove-port=6379/tcp --permanent 永久关闭端口

限制IP地址访问
比如限制IP为192.168.0.200的地址禁止访问80端口即禁止访问机器
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.200" port protocol="tcp" port="80" reject"
解除刚才被限制的192.168.0.200
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.0.200" port protocol="tcp" port="80" accept"
如我们需要限制10.0.0.0-10.0.0.255这一整个段的IP,禁止他们访问
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.0.0.0/24" port protocol="tcp" port="80" reject"
解除限制
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="10.0.0.0/24" port protocol="tcp" port="80" accept"
查看已经设置的规则
firewall-cmd --zone=public --list-rich-rules
可尝试直接编辑规则文件
vim /etc/firewalld/zones/public.xml

netstat -ntpl  查询所有正在使用端口

free -h 查看内存使用率
htop 查看cup使用率

建立软连接,变为全局

ln
    -b 删除,覆盖以前建立的链接
    -d 允许超级用户制作目录的硬链接
    -f 强制执行
    -i 交互模式,文件存在则提示用户是否覆盖
    -n 把符号链接视为一般目录
    -s 软链接(符号链接)
    -v 显示详细的处理过程
示例    ln -s /usr/local/java/jdk1.8.0_144/bin/* /usr/local/bin/

如何查找 SHELL 的进程号并杀死

一、shell 查找进程并杀死

复制代码
#!/bin/sh
tomcat_id=`ps -ef | grep tomcat | grep -v "grep" | awk '{print $2}'`
echo $tomcat_id

for id in $tomcat_id
do
    kill -9 $id
    echo "killed $id"
done
复制代码
注意:tomcat表示要查找的程序进程名,如:tomcat、8081端口、redis等等

二、linux 查找进程并杀死

#####查找tomcat进程
ps -ef | grep tomcat | grep -v grep | awk '{print $2}'
#####查找tomcat进程并杀死
ps -ef | grep tomcat | grep -v grep | awk '{print $2}' | xargs kill -9

删除

一、Linux下删除文件和文件夹常用命令如下:
删除文件: rm file  www.2cto.com
删除文件夹: rm -rf dir
需要注意的是, rmdir 只能够删除 空文件夹。

二、删除指定文件(夹)之外的所有文件呢?
需要在当前文件夹中进行:
#删除keep文件之外的所有文件
rm -rf !(folder)

#删除folder1和folder2文件之外的所有文件
rm -rf !(folder1 | folder2)

当前文件夹中结合使用grep和xargs来处理文件名:
#删除keep文件之外的所有文件
ls | grep -v keep | xargs rm
说明: ls先得到当前的所有文件和文件夹的名字, grep -v keep,进行grep正则匹配查找keep,-v参数决定了结果为匹配之外的结果,也就是的到了keep之外的所有文件名,然后 xargs用于从 标准输入获得参数 并且传递给后面的命令,这里使用的命令是 rm,然后由rm删除前面选择的文件。
好处:使用了grep来正则表达式来匹配文件名字,可以一次保留多个文件,从而进行更加准确的处理。

使用find命令代替ls,改进方法3从而能够处理制定文件夹的文件:
#删除当前test文件夹中keep文件之外的所有文件
find ./test/ | grep -v keep | xargs rm
说明,用grep而不用find -name选取名字,因为find选取名字时比较麻烦,对正则表达式支持不够,无法排除指定文件名。

直接使用find命令删除其他文件:
#删除keep以外的其他文件。
find ./ -name '[^k][^e][^e][^p]*'  -exec rm -rf {} \;

 #删除keep以外的其他文件。推荐!
find ./ -name '[^k][^e][^e][^p]*'  | xargs rm -rf
说明:上面第二行的代码效率高些,原因在于删除多个文件时 -exec会启动多个进程来处理,而xargs会启动一个rm进程来处理。

systemctl

systemctl list-unit-files 查询启动项
systemctl list-unit-files | grep enabled 启用的
systemctl list-unit-files | grep disabled 紧用的
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_dav_module

常用工具

Xshell上传文件 ==> yum install lrzsz -y

端口测试

  • tpc
telnet 127.0.0.1 23
nmap 127.0.0.1 -p23
nc -vzw 2 127.0.0.1 23
  • udp
nc -ul -p 23
nc -ul 23
nc -ul 127.0.0.1 23

文章作者: shipengzhen
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 shipengzhen !
 上一篇
RocketMQ RocketMQ
RocketMQ1.安装RocketMQ1.1 启动RocketMQ1.1.1 启动NameServer1.启动NameServer cd 进入RocketMQ安装目录 nohup sh bin/mqnamesrv > mqnamesrv.
2020-06-20
下一篇 
Fenix — 比 MyBatis 更加强大的 Spring Data JPA 扩展库 Fenix — 比 MyBatis 更加强大的 Spring Data JPA 扩展库
Fenix(菲尼克斯)是一个比 MyBatis 更加强大,为解决复杂、动态 SQL (JPQL) 而生的 Spring Data JPA 扩展库,目的是辅助开发者更方便、快捷的书写复杂、动态且易于维护的 SQL,支持 XML 和 Java
2019-08-20
  目录