目录
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
配置环境变量
对所有用户都生效
读取环境变量的方法:
- export命令显示当前系统定义的所有环境变量
- 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)来同步最新的时间。以下是一些步骤:
-
安装 NTP 客户端:
sudo apt-get update sudo apt-get install ntp
如果你使用的是其他 Linux 发行版,请使用相应的包管理工具进行安装。
-
配置 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 服务器。确保保存并关闭文件。
-
重启 NTP 服务:
重新启动 NTP 服务,以使更改生效。
sudo service ntp restart
或者,如果你的系统使用 systemd:
sudo systemctl restart ntp
-
手动同步时间(可选):
你也可以手动同步时间,而不必等待 NTP 客户端自动同步。
sudo ntpdate -u 时间服务器地址
其中,
时间服务器地址
是你要同步的 NTP 服务器地址。例如,你可以使用time.windows.com
、time.apple.com
或其他 NTP 服务器。
确保你的防火墙允许 NTP 流量,以确保客户端可以与 NTP 服务器通信。上述步骤中的命令可能因你的 Linux 发行版而异,所以请根据你使用的系统进行相应的调整。
手动修改日期
手动更改系统时间的方法取决于你使用的操作系统。以下是在 Linux 和 Windows 上手动更改时间的一些步骤:
在 Linux 上手动更改时间:
-
使用
date
命令设置新的日期和时间。以下是一个示例:sudo date MMDDhhmm[[CC]YY][.ss]
MM
: 月份DD
: 日hh
: 小时mm
: 分钟CC
: 世纪YY
: 年份的后两位ss
: 秒(可选)
例如,要将时间设置为 2023 年 01 月 01 日 12:34:56,可以执行以下命令:
sudo date 010112342023.56
-
通过
hwclock
命令将系统时间同步到硬件时钟:sudo hwclock --systohc
在 Windows 上手动更改时间:
-
在任务栏上右键单击系统时钟,选择 “Adjust date/time”。
-
在 “Date & time” 设置中,选择 “Change” 按钮。
-
设置新的日期和时间,然后选择 “Change”。
-
如果需要更改时区,可以在 “Time zone” 中进行选择。
-
确定更改。
请注意,手动更改系统时间可能会导致一些应用程序和服务出现问题,特别是依赖于准确时间的应用程序。最好的方式是让系统自动与时间服务器同步。
设置时区为EST
在 Linux 系统中,你可以使用 timedatectl
命令来设置时区。以下是在 Linux 上设置时区为 EST(Eastern Standard Time)的步骤:
-
查看可用的时区列表:
timedatectl list-timezones | grep America/New_York
上述命令会列出所有以 “America/New_York” 开头的时区,其中包括 EST。
-
设置时区为 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
-
验证设置:
使用以下命令验证是否已成功设置时区:
timedatectl
这将显示当前的系统时间和时区设置。
请注意,确保在设置时区时考虑夏令时。如果你在系统中启用了 NTP(Network Time Protocol),它也可能会影响时区的设置。最好在设置时区后,验证一下系统时间是否正确。
设置时区为UTC
在 Linux 系统上,你可以使用 timedatectl
命令或直接创建符号链接来设置时区为 UTC。以下是使用这两种方法的步骤:
使用 timedatectl
设置时区为 UTC:
-
检查可用的时区列表:
timedatectl list-timezones | grep UTC
上述命令将列出所有以 “UTC” 开头的时区。
-
设置时区为 UTC:
sudo timedatectl set-timezone UTC
-
验证设置:
timedatectl
这将显示当前的系统时间和时区设置。
使用符号链接设置时区为 UTC:
-
创建符号链接到 UTC:
sudo ln -sf /usr/share/zoneinfo/UTC /etc/localtime
上述命令会将
/etc/localtime
符号链接到UTC
,从而设置系统时区为 UTC。 -
验证设置:
date
这将显示当前的日期和时间,以及时区信息。
无论使用哪种方法,都应该能够将系统时区成功设置为 UTC。确保在设置时区后验证系统时间是否正确。