Linux常用指令

本文详述了Linux操作系统中的基本概念和常用命令,包括目录结构、文件类型、运行级别以及一系列用于文件操作、用户管理、权限设置、系统监控等方面的基本指令。此外,还介绍了VIM编辑器的使用、定时任务的设置以及如何通过Shell脚本进行流程控制。文章深入浅出地阐述了Linux运维中必备的知识,对于理解和操作Linux系统具有很高的实用价值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录结构

bin:存放系统命令

home:存放普通用户的主目录,每个普通用户对应一个目录

root:管理员用户的的主目录

etc:配置文件存放的目录

例如:/etc/passwd 用户信息

​ /etc/shadow 用户加密信息

​ /etc/group 分组信息

usr:放用户的应用程序和文件

usr/local:是另一个给主机额外安装软件所安装的目录

boot:存放启动Linux使用的核心文件

media:外设文件

var:这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。如各种日志文件。

文件类型

-:普通文件

d:目录文件

l:软链接文件

c:字符设备文件

b:块设备文件

运行级别

0 :关机

1:单用户(可以用来找回root密码,必须在本机上操作)

2:多用户(无网络)

3:多用户(有网络)

4:保留

5:图形界面

6:重启

配置文件在/etc/inittab下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JAc2uRMi-1629133829781)(upload%5Cimage-20210411204506675.png)]

基本命令

  1. 查看手册

    man [具体命令]

  2. 查看当前系统信息

    uname -r 查看当前系统内核发行号

  3. 查看当前时间

    date [+%Y] [+%m] [+%d] 显示年/月/日

    date “+%Y-%m-%d %H:%M:%S” 根据指定格式显示当前时间

  4. 查看日历

    cal [month] [year]

    cal 4 2021 查看2021年4月的日历

  5. 回显输入内容

    echo hello world

  6. 关机

    shutdown –h now 立刻关机

    shudown -h 1 1分钟后会关机了

  7. 重启

    shutdown –r now 现在重新启动计算机

  8. 查看执行命令的历史

    history 10 显示最近执行的10条命令

用户

  1. 创建用户

    useradd 【 -g groupname 】user

  2. 修改密码

    passwd user

  3. 切换用户

    su user 切换到user用户

    使用exit退出,回到原本账户

  4. 删除账户

    userdel user

  5. 查看当前登录系统的用户

    who

  6. 查询用户信息

    id user

  7. 切换用户级别

    init [012356]

  8. 修改文件所有者

    chown username user.tar.gz 【组并不变化】

    chown username:groupname user.tar.gz【同时改变组和所有者】

    chown [-R] user:user logs/ 将logs下的文件全部转移到user组和user用户下

  9. 修改文件所有组

    chgrp [-R] groupname user.tar.gz

  10. 组的创建

groupadd groupname

  1. usermod –g 组名 用户名 【修改用户所在组】

    usermod –d 目录名 用户名 【改变该用户登陆的初始目录 】

文件目录

  1. pwd 显示当前工作目录

  2. ls -lah 显示当前目录下的文件

    【-a表示显示所有(包括隐藏的)-l表示以列表的方式显示信息 -h表示文件大小以更友善的方式显示】

  3. cd ~ 回到当前用户的根目录

  4. mkdir [-p] conf/myconf 新建目录【-p 表示新建多级目录】

  5. rmdir log 删除非空目录

    rm -rf conf/myconf

    find -exec rm -rf {} ; 删除找到的文件

  6. touch 新建空文件

  7. cp [-r] source dest 复制文件【-r 递归复制文件夹】

  8. rm [-rf] 删除文件【-r 递归,-f不提示】

  9. 移动或者重命名文件

    rm name1 name2

    rm oldfilepath newfilepath

  10. > 重定向

    ls -l > file 将ls -l的内容写入file

  11. >> 追加

    ls -la >> file 将ls -la 追加到file末尾

  12. 符号链接

    ln test.txt copy_test 硬链接

    ln [-s] /root copy_root 软连接 【-s可以似的链接到目录】

查看文件

  1. cat

    查看文件全部内容

    cat -n Main.java 查看Main.java全部内容,并对所有行进行编号

    cat Main1.java Main2.java 同时查看Main1.java 和Main2.java

    cat Main1.java Main2.java > Main3.java 将文件Main1.java和Main2.java合并成文件Main3.java

    cat > Main4.java 将键盘输入信息到文件Main4.java中【回车+(Ctrl + D)】

  2. more

    查看一屏文件内容

    空格键 显示下一屏

    回车键 显示下一行

    b 显示上一屏

    q 退出

    more -10 Main1.java 一屏展示十行

    more -d Main1.java 在每屏底部显示提示信息(当前展示内容的百分比,按键提示等)

    more -c Main1.java 不滚屏(即:在输出下一屏时先清屏)

    more +10 Main1.java 从第十行开始显示

    more +/System Main1.java 在文件中查找System,并从其第一次出现的 位置附近开始显示

  3. less(适合显示大型文件)

    less -M -N -I -p Int Main1.java

    -M 显示读取文件的百万比、行数

    -I 搜索时忽略大小写

    -i 搜索时忽略大小写,除非搜索的字符中包含大写

    -N 在每行前输出行号

    -p pattern 搜索字符串pattern,并从包含其的第一行开始打印

  4. head

    head -c100 Main1.java 查看该文件的前100个字符

    head -n10 Main1.java 查看该文件的前十行

  5. tail

    tail -c100 Main1.java 查看该文件的最后100个字符

    tail -n10 Main1.java 查看该文件的最后十行数据

VIM

在正常模式下:

nyy表示复制当前向下的n行,按p进行粘贴

ndd表示删除当前向下的n行

在命令行模式下使用/Hello 搜索关键字

显示行号:set nu

取消行号:set nonu

在正常模式下:按G调到文件末行,按gg回到文件首行

撤销输入:先按esc回到正常模式下,然后按u

按行移动光标

​ 数字0,可将光标移动到当前行行首。
​ $键,将光标移到当前行行尾。
​ G键将光标移到文件最末行行首,若将光标移动到指定行,可使用:
​ [行号]G

在屏幕内移动光标

​ H(Home)键将光标定位到屏幕顶部一行的最左端;
​ M(Middle)键将光标定位到屏幕的中间一行;
​ L(Lower)键将光标定位到屏幕底部的一行。

搜索查找

  1. find

    find /home -name hello.txt 在指定目录下查找指定名称的文件

    find /home -user user 在指定目录下查找用户user的文件

    find / -size +20M 在指定目录下查找大于20M的文件【-n 表示小于 +n 表示大于 n表示等于 】单位M、k

  2. locate

    快速定位文件

    第一次使用前,必须使用updatedb指令创建locate数据库

  3. grep

    |:管道符,表示将前一个命令的处理结果输出传递给后一个命令去处理

    cat Main1.java | grep [-ni] System

    在Main1.java中不区分大小写查找System并且显示行号

解/压缩

  1. gzip 压缩文件 压缩后原本文件不保留 压缩为.gz格式

    gunzip 解压文件

  2. zip 压缩文件 zip -r【递归压缩】 package.zip【压缩包名】 /home/yb 【路径】

    unzip 解压文件 unzip -d【指定路径】/home/user【路径】 package.zip【解压那个包】

  3. tar

    tar -zcvf a.tar.gz Main1.java Main2.java 将Main1/2.java打包成a.tar.gz

    tar -zxvf a.tar.gz 【-C /opt】 将a.tar.gz解压【到指定目录】

权限

rwx作用到文件

  1. [ r ]代表可读(read): 可以读取,查看

  2. [ w ]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是

对该文件所在的目录有写权限,才能删除该文件.

  1. [ x ]代表可执行(execute):可以被执行

rwx作用到目录

  1. [ r ]代表可读(read): 可以读取,ls查看目录内容

  2. [ w ]代表可写(write): 可以修改,目录内创建+删除+重命名目录

  3. [ x ]代表可执行(execute):可以进入该目录

修改权限

u当前用户 g当前组 o其他人 a 所有人

chmod u+rwx,g-w,o=rw Main1.java

chmod 726 Main1.java

定时任务

步骤

1.crontab –e

2.*/1 * * * * ls -l /etc >> /tmp/to.txt

3.当保存退出后就执行程序

显示当前正在执行的定时任务

crontab -l

终止定时任务

crontab -r

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UIdXSqs1-1629133829786)(upload Cimage-20210406225956718.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CZ3E3rny-1629133829789)(upload%5Cimage-20210406230021108.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nd4sV1o5-1629133829792)(upload%5Cimage-20210406230039060.png)]

系统常用命令

查看当前系统位数:getconf LONG_BIT

一般把软件安装到/usr/local/*下

查看当前正在运行的进程 ps -ef

安装netstat工具 yum install net-tools
查看服务器所有被占用的端口 netstat -ant
查看某个端口 netstat -tunlp|grep 80
查看所有端口 netstat -lntp
释放端口 firewall-cmd --zone=public --add-port=80/tcp --permanent
重载防火墙 firewall-cmd --reload

删除文件 rm -rf webapps

重命名文件 mv webapps.dist webapps

授权 chmod -R(递归) 777 /mydata/elasticsearch/data

查看编码:vim下:set fileencoding

磁盘相关指令

  1. 查看当前系统还有多大的磁盘容量

    df -lh

  2. 查看目录占用情况

    du -ach --max-depth=1 /目录

    a:含文件

    c:显示汇总值

    h:带计量单位

    –max-depth=1:查询深度为1

  3. 查看目录下有几个标准文件

    ls -l【R】 /home | grep “^-” | wc -l(R递归)

  4. 查看目录下有几个标准目录

    ls -l /home | grep “^d” | wc -l

  5. 以树状显示目录i

    tree /

进程管理

  1. jobs:查看后台进程作业

  2. 显示系统执行的进程

    a:显示所有进程

    f:显示父进程

    u:指定用户的所有进程

    x:显示后台进程运行的参数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3azguXKv-1629133829796)(upload%5Cimage-20210411195727244.png)]

  1. 终止进程

    kill 3391

    终止多个进程

    killall vim 【杀掉所有vim的子进程】

  2. 强制终止

    kill-9 xxxx

  3. 以树状形式展示进程信息

    pstree [-pu] 【-p:显示父进程ID】【-u显示进程所属用户】

服务管理

**service 执行后立刻生效但是关机失效 **

chkconfig执行后不立刻生效 但是重启后会一直生效

  1. 查看服务

    service xxxx status

  2. 开启服务

    service xxxx start (临时生效)

  3. 关闭服务

    service xxxx stop (临时生效)

  4. 在windows测试linux某端口是否打开

    telnet 192.168.1.1 3306

  5. chkconfig

    chkconfig --list 查看所有服务的与运行级别

    chkconfig xxx --list 查看服务xxx在各个级别下是否自启动

  6. 修改某个服务在某运行级别下是否自启动

    chkconfig --level 1 vmware-tools on 不写level默认在所有级别下

RPM & YUM

  1. 查询当前系统有没有安装某软件包

    rpm -qa | grep java 【-q查询 -a所有】

  2. 查询是否安装某软件

    rpm -q firefox

  3. 查看某个软件包的详细信息

    rpm -qi firefox

  4. 查看某软件安装到哪了

    rpm -ql firefox

  5. 查询某个文件属于哪个软件

    rpm -qf 文件路径

  6. 卸载rpm包

    rpm -r 【–nodeps 强制删除】 firefox

  7. 安装rpm

    rpm -ivh firefox-68.10.0-1.el7.centos.x86_64.rpm

  8. 查询yum服务器上是否有需要安装的软件

    yum list | grep redis

  9. 安装rpm

    yum install pcp-pmda-redis.x86_64

查看服务器当前情况

  1. free 内存

  2. 查看网络

    netstat -anp 【p:显示哪个进程在调用】

  3. ifstat 查看网络状况

  4. 动态监控

    top:类似于ps,但是会实时更新

    -i 忽略闲置或僵死进程

    top -d 10 :10秒刷新一次

    top -p 2359 :实时监控2359进程

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MejMBFL9-1629133829797)(upload%5Cimage-20210411210011959.png)]

    进入top后可以按u,然后输入用户名,来查看指定用户的进程状况

    进入top后可以按k,然后输入进程ID,可以来杀死进程

    按P :根据CPU使用排序

    按M :根据内存使用排序

    按N :根据PID排序

    q:退出

  5. vmstat

    主要查看CPU使用情况

  6. mpstat 查看各个cpu核心的使用情况

  7. pidstat 监控进程的系统资源占用情况

  8. iostat 查看磁盘io情况

Shell

注意:

变量名通常为大写,赋值时=两边不能有空格

  1. 查看系统变量

    echo "USER=$USER ";

  2. 定义变量

    A=100

  3. 撤销变量

    unset A

  4. 定义静态变量

    readonly B=23

  5. 定义环境变量

    vim /etc/profile

    TOMCAT_HOME=/opt/tomcat

    resource /etc/profile

  6. 多行注释

    :<<! ************ !

位置参数

第n个参数:$1 $2……$9 ${10}……

全部参数(整体对待):$*

全部参数(分开对待):$@

参数个数:$#

预定义变量

echo "当前进程号: $$"
./myshell02.sh &  #后台运行一个程序
echo "最后一个后台进程: $!"
echo "上一个命令是否执行成功:  $?"

运算符

expr a + b #运算符之间必须要有空格

“$*((运算式))”

“$[运算式]”#推荐

流程控制

if
#!/bin/bash

if [ $1 -ge 60 ]
then
   echo "及格了"
elif [ $1 -lt 60 ] 
then 
   echo "不及格"
fi

if [ "ok" = "ok" ]
then
   echo "equal"
fi


if [ 23 -gt 22 ]
then 
   echo "ok"
fi

if [ -e /shell/a.txt ]
then
   echo "存在"
fi

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jolmpMmg-1629133829799)(upload%5Cimage-20210416173625801.png)]

case
case $1 in
"1")
echo "周一"
;;
"2")
echo "周二"
;;
*)
echo "other"
;;
esac
for
echo "\$*输出如下"
for i in "$*"
do
        echo "then num is $i"
done
echo "\$@输出如下"
for i in "$@"
do
        echo "then num is $i"
done
SUM=0
for((i=1;i<=100;i++))
do
   SUM=$[$SUM+i]
done
echo "SUM=$SUM"

while

COUNT=1
while [ $COUNT -lt 10 ]
do
   echo "count = $COUNT"
   COUNT=$[$COUNT+1]
done

读取控制台输入

read -p "请输入一个数字num1=" NUM1
echo "您输入的是num1=$NUM1"
#在规定时间内输入num2  单位为秒
read -t 5 -p "请输入一个数字num2=" NUM2
echo "您输入的是num2=$NUM2"

函数

basename:获取文件名

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mBCmzZRl-1629133829801)(upload%5Cimage-20210416183235357.png)]

dirname:获取目录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DDtEruHa-1629133829803)(upload%5Cimage-20210416183504252.png)]

自定义

#不需要形参
function getSum(){
        SUM=$[$N1+$N2]
        echo "和是=$SUM"
}

read -p "请输入第一个数:" N1
read -p "请输入第二个数:" N2
getSum $N1 $N2

其他

SSH

先检查有没有安装ssh服务:rpm -qa | grep ssh

如果没有安装ssh服务就安装 : yum install openssh-server

安装好后在ssh配置文件里进行配置 : vim /etc/ssh/sshd_config

Port 22
PermitRootLogin yes

开启后用 ps -e | grep sshd 检查一下ssh服务是否开启

安装JDK

查看jdk版本:java -version

查看当前jdk信息:rpm -qa | grep java

卸载jdk:rpm -e --nodeps jdk名

解压tar.gz压缩包:tar -zxvf jdk.tar.gz

配置jdk环境变量

vim /etc/profile

Esc + :wq 保存并退出

Esc + :q! 强制退出并忽略所有更改

#set java envirment
export JAVA_HOME=/root/jdk1.8.0_152
export PATH= J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:PATH
export CLASSPATH=.: J A V A H O M E / l i b / d t . j a r : JAVA_HOME/lib/dt.jar: JAVAHOME/lib/dt.jar:JAVA_HOME/lib/tools.jar

随后重新加载该文件:source /etc/profile

安装MySQL

解压tar压缩包:tar -xvf mysql.tar

查看当前MySQL信息:rpm -qa | grep mysql

卸载mysql:rpm -e --nodeps mysql名

安装服务端: rpm -ivh MySQL-server-5.6.22-1.el6.i686.rpm

安装tomcat

tar -zxvf apache-tomcat-7.0.57.tar.gz

./starup.sh

开放端口:/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT

静态IP

vi /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
HWADDR=00:0C:29:41:02:37
TYPE=Ethernet
UUID=25e15832-7fb8-4934-a512-bdd0133d98e7
NM_CONTROLLED=yes

ONBOOT=yes 自启动
BOOTPROTO=static 静态IP
IPADDR=192.168.1.1 IP地址
NETWORK=255.255.255.0 子网掩码

配置网络

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yGmKXRin-1629133829805)(upload%5Cimage-20210112203413205.png)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值