linux常用命令

linux参考手册

  1. 菜鸟教程
  2. linux命令大全

Linux终端提示符

在这里插入图片描述

Linux命令语法

1.一般情况下,【参数】是可选的,一些情况下【文件或路径】也是可选的

2.同一个命令,跟上不同的参数执行不同的功能

3.执行linux命令,添加参数的目的是让命令更加贴切实际工作的需要!

4.linux命令,参数之间,普遍应该用一个或多个空格分割!

mkdir创建目录

cd /
mkdir oldboy
#递归创建a/b   c/d
mkdir -p a/b c/d
#递归创建test/a,b,c,d四个目录
mkdir -p test/{a,b,c,d}
#递归创建文件夹a/b/c/d/e
mkdir -p a/b/c/d/e

ls查看目录内容

ls /oldboy

cd改变目录位置

cd /home
cd ~
cd -

pwd打印工作目录位置

pwd

touch创建文本

touch  happy.txt

vi文本编辑器

所有的 Unix Like 系统都会内建 vi 文书编辑器,但是目前我们使用比较多的是 vim 编辑器。

vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。

#方法,命令
vi
vim
使用vi打开oldboy.py,默认是命令模式,需要输入a/i进入编辑模式,然后输入文本"Life is short,i use python"
按下esc键,回到命令模式
输入  :wq!  强制保存退出
w write 写入
q quit 退出
! 强制
或者  :x 保存退出
------
:q  不保存退出
:q! 不保存强制退出

cat文件内容

cat命令用于查看纯文本文件(常用于内容较少的)

#查看文件,显示行号
cat -n xxx.py
#猫,查看文件
cat xxx.py
#在每一行的结尾加上$符
[root@master tmp]# cat -E 1.txt
#追加文字到文件
cat >>/tmp/oldboy.txt << EOF
我有一个大宝贝
EOF

more查看文件

1.more命令用于查看内容较多的文本,例如要看一个很长的配置文件,cat查看内容屏幕会快速翻滚到结尾。

2.more命令查看文本会以百分比形式告知已经看到了多少,使用回车键向下读取内容

more /etc/passwd
按下空格space是翻页
按下b键是上一页
回车键向下读取内容

echo打印

#默认吧内容显示到终端上    
echo "EDG666"
# 输出到文件
echo "EDG666" > /tmp/chaoge.txt
echo $PATH #取出打印PATH的值

Linux特殊符号

输入/输出 重定向符号
1.>>    追加重定向,把文字追加到文件的结尾
2.>     重定向符号,清空原文件所有内容,然后把文字覆盖到文件末尾
3.<     输入重定向
4.<<    将输入结果输入重定向
echo "oldboy-python666" > /tmp/oldboy.txt
echo "chaoge666" >> /tmp/oldboy.txt
cat >>/tmp/oldboy.txt << EOF
------------------------------------
ip addr > /tmp/network.txt   #标准输出重定向 把命令执行结果信息,放入到文件中
3.通配符  
ls -l /etc/us*

cp复制命令

复制 > copy > cp
#移动xxx.py到/tmp目录下
cp xxx.py /tmp/
#移动xxx.py顺便改名为chaoge.py
cp xxx.py /tmp/chaoge.py
Linux下面很多命令,一般没有办法直接处理文件夹,因此需要加上(参数) 
cp -r 递归,复制目录以及目录的子孙后代
cp -p 复制文件,同时保持文件属性不变    可以用stat
cp -a 相当于-pdr
#递归复制test文件夹,为test2
cp -r test test2
cp是个好命令,操作文件前,先备份
cp main.py main.py.bak

mv移动命令

移动(搬家)命令  > move > mv
cd /home
#把老男孩从沙河这破地方,搬到朝阳去
mv /home/shahe/oldboy /tmp/chaoyang
文件/文件夹改名
mv x.log xx.log

rm删除命令

删除  > remove > rm
参数  -i  需要删除确认
   -f  强制删除
     -r  递归删除目录和内容
cd /tmp
rm oldboy.py
#默认有提示删除,需要输入y
rm -f oldboy.py #不需要提示,强制删除
#rm默认无法删除目录,需要跟上参数-r
rm -rf /tmp/oldboy/

find查找命令

#Linux里如何找到需要的文件 例如 oldboy.py
find 在哪里(目录) 什么类型(文件类型) 叫什么名字(文件名)
参数
-name 按照文件名查找文件
-type 查找某一类型的文件,诸如:
b - 块设备文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接文件。
f - 普通文件。
s - socket文件
find /tmp/ -type f  -name "oldboy.py"
#找出/tmp所有以 .txt 结尾的文件
find /tmp/ -type f -name "*.txt"
#找到/etc下所有名字以host开头的文件
find /etc -name 'host*'
#找到/opt上一个名为settings.py
find /opt -name 'settings.py'

管道符”|”

Linux提供的管道符“|”讲两条命令隔开,管道符左边命令的输出会作为管道符右边命令的输入。
常见用法:
#检查python程序是否启动
ps -ef|grep "python"
#找到/tmp目录下所有txt文件
ls /tmp|grep '.txt'
#检查nginx的端口是否存活
netstat -tunlp |grep nginx

在这里插入图片描述

grep搜索命令

语法:
grep [参数] [--color=auto] [字符串] filename
参数详解:
-i : 忽略大小写
-n : 输出行号
-v : 反向选择
--color = auto : 给关键词部分添加颜色
grep "我要找什么" /tmp/oldboy.txt
#排除 -v,排除我要找的东西
grep -v "我要找什么 /tmp/oldboy.txt

找出/etc/passwd所有不允许登录的用户

grep /sbin/nologin /etc/passwd

head、tail查看文件

head显示文件前几行,默认前10行
tail显示文件后几行,默认后10行
#查看前两行
head -2 /tmp/oldboy.txt
#查看后两行
tail -2 /tmp/oldboy.txt
#持续刷新显示
tail -f xx.log
#显示文件10-30行
head -30 /tmp/oldboy.txt |tail -21

alias别名命令

#查看系统别名
alias
默认别名
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'
别名作用是:
我们在linux中使用cp时候相当于执行了cp -i
-i:删除已有文件或目录之前先询问用户;

which查找命令

which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。
which指令会在环境变量$PATH设置的目录里查找符合条件的文件。
也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
which pwd
which python
which python       #python命令在哪
/usr/bin/python    #命令文件绝对路径

scp远程传输命令

Linux scp命令用于Linux之间复制文件和目录。

scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。

语法
scp 【可选参数】 本地源文件 远程文件标记
-r :递归复制整个目录
-v:详细方式输出
-q:不显示传输进度条
-C:允许压缩
#传输本地文件到远程地址
scp 本地文件  远程用户名@远程ip:远程文件夹/
scp 本地文件  远程用户名@远程ip:远程文件夹/远程文件名
scp /tmp/chaoge.py root@192.168.1.155:/home/
scp /tmp/chaoge.py root@192.168.1.155:/home/chaoge_python.py
scp -r  本地文件夹  远程用户名@远程ip:远程文件夹/
scp -r /tmp/oldboy root@192.168.1.155:/home/oldboy
#复制远程文件到本地
scp root@192.168.1.155:/home/oldboy.txt /tmp/oldboy.txt
scp -r root@192.168.1.155:/home/oldboy /home/

du统计文件大小

Linux du命令用于显示目录或文件的大小。

du会显示指定的目录或文件所占用的磁盘空间。

用法
du 【参数】【文件或目录】
-s 显示总计
-h 以k,M,G为单位显示,可读性强

显示目录或文件所占空间
#什么都不跟,代表显示当前目录所有文件大小
du   
#显示/home的总大小
du -sh /home

top系统负载查看

top 命令用于动态地监视进程活动与系统负载等信息

在这里插入图片描述

第一行 (uptime)
系统时间 主机运行时间 用户连接数(who) 系统1,5,15分钟的平均负载
第二行:进程信息
进程总数 正在运行的进程数 睡眠的进程数 停止的进程数 僵尸进程数
第三行:cpu信息
1.5 us:用户空间所占CPU百分比
0.9 sy:内核空间占用CPU百分比
0.0 ni:用户进程空间内改变过优先级的进程占用CPU百分比
97.5 id:空闲CPU百分比
0.2 wa:等待输入输出的CPU时间百分比
0.0 hi:硬件CPU中断占用百分比
0.0 si:软中断占用百分比
0.0 st:虚拟机占用百分比
第四行:内存信息(与第五行的信息类似与free命令)
8053444 total:物理内存总量
7779224 used:已使用的内存总量
274220 free:空闲的内存总量(free+used=total)
359212 buffers:用作内核缓存的内存量
第五行:swap信息
8265724 total:交换分区总量
33840 used:已使用的交换分区总量
8231884 free:空闲交换区总量
4358088 cached Mem:缓冲的交换区总量,内存中的内容被换出到交换区,然后又被换入到内存,但是使用过的交换区没有被覆盖,交换区的这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。

防火墙(firewall)

在这里插入图片描述

# 查看防火状态
systemctl status firewalld

# 关闭防火墙
systemctl stop firewalld

# 不自启动
systemctl disable firewalld
# 自启动
systemctl enable firewalld

# 重启防火墙
firewall-cmd --reload
# 查看区域信息
firewall-cmd --get-active-zones
# 查看指定接口所属区域信息
firewall-cmd --get-zone-of-interface=eth0
# 开放80端口
firewall-cmd --zone=public --add-port=80/tcp(永久生效再加上 --permanent)
# 列出所有端口
firewall-cmd --zone=public --list-ports
# 移除80端口
firewall-cmd --remove-port=80/tcp --permanent
# zone默认为public 可以不加

开关防火墙

systemctl status firewalld 查看状态

systemctl stop firewalld        
systemctl start firewalld       
 
systemctl enable firewalld         
systemctl disable firewalld        

查看防火墙规则

firewall-cmd --list-all 

端口操作

打开端口: firewall-cmd --permanent --add-port=端口号/协议
关闭端口: firewall-cmd --permanent --remove-port=端口号/协议
重新载入: firewall-cmd --reload
查询端口: firewall-cmd --query-port=端口/协议

举例:

查询8080端口
firewall-cmd --query-port=8080/tcp

开放80端口
firewall-cmd --permanent --add-port=80/tcp

关闭8080端口
firewall-cmd --permanent --remove-port=8080/tcp

重启防火墙
firewall-cmd --reload

netstat

Linux netstat 命令用于显示网络状态。
netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]

-a或--all 显示所有连线中的Socket。
-A<网络类型>或--<网络类型> 列出该网络类型连线中的相关地址。
-c或--continuous 持续列出网络状态。
-C或--cache 显示路由器配置的快取信息。
-e或--extend 显示网络其他相关信息。
-F或--fib 显示路由缓存。
-g或--groups 显示多重广播功能群组组员名单。
-h或--help 在线帮助。
-i或--interfaces 显示网络界面信息表单。
-l或--listening 显示监控中的服务器的Socket。
-M或--masquerade 显示伪装的网络连线。
-n或--numeric 直接使用IP地址,而不通过域名服务器。
-N或--netlink或--symbolic 显示网络硬件外围设备的符号连接名称。
-o或--timers 显示计时器。
-p或--programs 显示正在使用Socket的程序识别码和程序名称。
-r或--route 显示Routing Table。
-s或--statistics 显示网络工作信息统计表。
-t或--tcp 显示TCP传输协议的连线状况。
-u或--udp 显示UDP传输协议的连线状况。
-v或--verbose 显示指令执行过程。
-V或--version 显示版本信息。
-w或--raw 显示RAW传输协议的连线状况。
-x或--unix 此参数的效果和指定"-A unix"参数相同。
--ip或--inet 此参数的效果和指定"-A inet"参数相同。
显示UDP端口号的使用情况
netstat -apu

显示网卡列表
netstat -i

显示网络统计信息
netstat -s

显示监听的套接口
netstat -l

修改hosts文件

vim /etc/hosts

配置环境变量

对所有用户都生效

读取环境变量的方法:

  1. export命令显示当前系统定义的所有环境变量
  2. echo $PATH命令输出当前的PATH环境变量的值
# 修改profile文件
vim /etc/profile
# 在最后一行加上,以配置mysql为例
export PATH=$PATH:/home/uusama/mysql/bin
# 生效
source /etc/profile

对当前用户生效

# 创建一个文件
`vim ~/.bash_profile`
# 在最后一行加上,以配置mysql为例
export PATH=$PATH:/home/uusama/mysql/bin
# 生效
source ~/.bash_profile

chmod

文件权限 0777 是一个八进制数,用于表示文件或目录的访问权限。在类Unix系统中,文件和目录的权限可以用三个八进制位来表示,每个位代表一组权限。

每个权限位由三个数字组成,其中第一个数字代表所有者(Owner)的权限,第二个数字代表所属组(Group)的权限,第三个数字代表其他用户(Others)的权限。每个数字都可以取值 0 到 7,对应不同的权限组合。这里的 0777 表示的权限是:

所有者:7(二进制 111)拥有读、写和执行权限
所属组:7(二进制 111)拥有读、写和执行权限
其他用户:7(二进制 111)拥有读、写和执行权限

将这三组权限组合在一起,就表示了文件或目录的完全权限,即所有用户都可以读取、写入和执行该文件或目录。

在八进制表示中,每个权限位可以用以下数值来表示:

  • 0:没有该权限
  • 1:执行权限
  • 2:写权限
  • 3:写和执行权限
  • 4:读权限
  • 5:读和执行权限
  • 6:读和写权限
  • 7:读、写和执行权限

需要注意的是,设置文件或目录的权限为 0777 意味着任何用户都可以访问、修改和执行该文件或目录。在安全性方面要谨慎,避免在实际应用中过度开放权限。通常情况下,应根据实际需求来设置适当的权限,以确保文件和目录的访问受到适当的限制。

修改日期

同步日期

在 Linux 系统上,你可以使用 NTP(Network Time Protocol)来同步最新的时间。以下是一些步骤:

  1. 安装 NTP 客户端:

    sudo apt-get update
    sudo apt-get install ntp
    

    如果你使用的是其他 Linux 发行版,请使用相应的包管理工具进行安装。

  2. 配置 NTP 客户端(可选):

    默认情况下,NTP 客户端通常会自动配置为使用默认的 NTP 服务器。但是,你可以编辑 NTP 配置文件以添加其他 NTP 服务器。配置文件通常位于 /etc/ntp.conf

    sudo nano /etc/ntp.conf
    

    在文件中找到或添加类似以下行的配置:

    pool 0.ubuntu.pool.ntp.org iburst
    pool 1.ubuntu.pool.ntp.org iburst
    pool 2.ubuntu.pool.ntp.org iburst
    pool 3.ubuntu.pool.ntp.org iburst
    

    这里使用的是 Ubuntu 的 NTP 服务器。你可以根据你的地理位置选择不同的 NTP 服务器。确保保存并关闭文件。

  3. 重启 NTP 服务:

    重新启动 NTP 服务,以使更改生效。

    sudo service ntp restart
    

    或者,如果你的系统使用 systemd:

    sudo systemctl restart ntp
    
  4. 手动同步时间(可选):

    你也可以手动同步时间,而不必等待 NTP 客户端自动同步。

    sudo ntpdate -u 时间服务器地址
    

    其中,时间服务器地址 是你要同步的 NTP 服务器地址。例如,你可以使用 time.windows.comtime.apple.com 或其他 NTP 服务器。

确保你的防火墙允许 NTP 流量,以确保客户端可以与 NTP 服务器通信。上述步骤中的命令可能因你的 Linux 发行版而异,所以请根据你使用的系统进行相应的调整。

手动修改日期

手动更改系统时间的方法取决于你使用的操作系统。以下是在 Linux 和 Windows 上手动更改时间的一些步骤:

在 Linux 上手动更改时间:

  1. 使用 date 命令设置新的日期和时间。以下是一个示例:

    sudo date MMDDhhmm[[CC]YY][.ss]
    
    • MM: 月份
    • DD: 日
    • hh: 小时
    • mm: 分钟
    • CC: 世纪
    • YY: 年份的后两位
    • ss: 秒(可选)

    例如,要将时间设置为 2023 年 01 月 01 日 12:34:56,可以执行以下命令:

    sudo date 010112342023.56
    
  2. 通过 hwclock 命令将系统时间同步到硬件时钟:

    sudo hwclock --systohc
    

在 Windows 上手动更改时间:

  1. 在任务栏上右键单击系统时钟,选择 “Adjust date/time”。

  2. 在 “Date & time” 设置中,选择 “Change” 按钮。

  3. 设置新的日期和时间,然后选择 “Change”。

  4. 如果需要更改时区,可以在 “Time zone” 中进行选择。

  5. 确定更改。

请注意,手动更改系统时间可能会导致一些应用程序和服务出现问题,特别是依赖于准确时间的应用程序。最好的方式是让系统自动与时间服务器同步。

设置时区为EST

在 Linux 系统中,你可以使用 timedatectl 命令来设置时区。以下是在 Linux 上设置时区为 EST(Eastern Standard Time)的步骤:

  1. 查看可用的时区列表:

    timedatectl list-timezones | grep America/New_York
    

    上述命令会列出所有以 “America/New_York” 开头的时区,其中包括 EST。

  2. 设置时区为 EST:

    选择适合你的时区,并使用 timedatectl 设置时区。例如,设置为 New York 的时区:

    sudo timedatectl set-timezone America/New_York
    

    或者,如果你不使用 timedatectl,你还可以直接创建符号链接到 /etc/localtime

    sudo ln -sf /usr/share/zoneinfo/America/New_York /etc/localtime
    
  3. 验证设置:

    使用以下命令验证是否已成功设置时区:

    timedatectl
    

    这将显示当前的系统时间和时区设置。

请注意,确保在设置时区时考虑夏令时。如果你在系统中启用了 NTP(Network Time Protocol),它也可能会影响时区的设置。最好在设置时区后,验证一下系统时间是否正确。

设置时区为UTC

在 Linux 系统上,你可以使用 timedatectl 命令或直接创建符号链接来设置时区为 UTC。以下是使用这两种方法的步骤:

使用 timedatectl 设置时区为 UTC:

  1. 检查可用的时区列表:

    timedatectl list-timezones | grep UTC
    

    上述命令将列出所有以 “UTC” 开头的时区。

  2. 设置时区为 UTC:

    sudo timedatectl set-timezone UTC
    
  3. 验证设置:

    timedatectl
    

    这将显示当前的系统时间和时区设置。

使用符号链接设置时区为 UTC:

  1. 创建符号链接到 UTC:

    sudo ln -sf /usr/share/zoneinfo/UTC /etc/localtime
    

    上述命令会将 /etc/localtime 符号链接到 UTC,从而设置系统时区为 UTC。

  2. 验证设置:

    date
    

    这将显示当前的日期和时间,以及时区信息。

无论使用哪种方法,都应该能够将系统时区成功设置为 UTC。确保在设置时区后验证系统时间是否正确。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Generalzy

文章对您有帮助,倍感荣幸

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值