zl程序教程

您现在的位置是:首页 >  系统

当前栏目

Linux常用命令速查册,再也不用费脑细胞了

Linux 常用命令 再也 速查
2023-09-11 14:15:39 时间

目录

​编辑

学习linux好习惯 

常见问题 command not found

乱码问题及解决方法

 centos中显示utf-8编码格式的shell脚本有中文乱码

系统版本和内核版本

常用性能检查命令(内存、CPU 、网络、磁盘、Java应用)

硬件时钟, 系统时钟, 网络时钟, 时区修改和同步​​

systemctl命令 

Linux查找最近修改的文件

关机

  Linux下查看文件和文件夹大小的df和du命令

 根据端口号查询进程pid

 pstree以树结构显示进程

 删除文件  

移动文件  修改文件名

 jinfo用法

 防火墙&开放端口

Centos 7 firewall 命令:

CentOS 7 以下版本 iptables 命令

 查看文本文件内容 


目录

学习linux好习惯 

常见问题 command not found

乱码问题及解决方法

 centos中显示utf-8编码格式的shell脚本有中文乱码

系统版本和内核版本

常用性能检查命令(内存、CPU 、网络、磁盘、Java应用)

硬件时钟, 系统时钟, 网络时钟, 时区修改和同步​​

systemctl命令 

Linux查找最近修改的文件

关机

  Linux下查看文件和文件夹大小的df和du命令

 根据端口号查询进程pid

 pstree以树结构显示进程

 删除文件  

移动文件  修改文件名

 jinfo用法

 防火墙&开放端口

Centos 7 firewall 命令:

CentOS 7 以下版本 iptables 命令

 查看文本文件内容 


学习linux好习惯 

善于查看man page(manual)等帮助文档

利用好Tab键

掌握好一些快捷键

ctrl + c(停止当前进程)

history(查看命令历史)

ctrl + l(清屏,与clear命令作用相同)

常见问题 command not found

telnet不能用!!!提示:-bash: telnet: command not found

解决方式,重装一下telnet客户端。

centosubuntu

yum list telnet* 查看telnet相关的安装包

yum install telnet-server 安装telnet服务

yum install telnet.* 安装telnet客户端

乱码问题及解决方法

出现这个情况一般是由于没有安装中文语言包,或者设置的默认语言有问题导致的。
查看当前语言环境
echo $LANG
发现为
zh_TW.UTF-8
但是中文语言包没安装或没启用,就会出现乱码

输入LANG=en_US设置显示为英文,此命令即时生效,但不能永久生效,永久生效看下面。
此时,再次输入命令就可以看到英文报错信息了

如果一定需要中文提示,可以这样安装:
yum groupinstall chinese-support
设置本地默认语言环境
vim /etc/locale.conf加入
LANG=“zh_TW.UTF-8”
即时永久生效
source /etc/locale.conf

locale可以查看本地语言环境

LANG=zh_TW.UTF-8
LC_CTYPE="zh_TW.UTF-8"
LC_NUMERIC=zh_TW.UTF-8
LC_TIME=zh_TW.UTF-8
LC_COLLATE="zh_TW.UTF-8"
LC_MONETARY=zh_TW.UTF-8
LC_MESSAGES="zh_TW.UTF-8"
LC_PAPER=zh_TW.UTF-8
LC_NAME="zh_TW.UTF-8"
LC_ADDRESS="zh_TW.UTF-8"
LC_TELEPHONE="zh_TW.UTF-8"
LC_MEASUREMENT=zh_TW.UTF-8
LC_IDENTIFICATION="zh_TW.UTF-8"
LC_ALL=

 centos中显示utf-8编码格式的shell脚本有中文乱码

问题现象

自己编写的shell脚本,保存的编码格式为utf-8,但是上传到centos中,显示为中为乱码

使用file shell.sh 查看文件的编码格式

shell.sh: UTF-8 Unicode text

解决方法

使用iconv 把文件编码格式转换成为gb2312

iconv -f utf-8 -t gb2312 shell.sh > shell2.sh

再次file shell2.sh查看文件编码

linuxsec2.sh: ISO-8859 text

中文乱码问题得以解决

系统版本和内核版本

Linux查看系统版本和内核版本

常用性能检查命令(内存、CPU 、网络、磁盘、Java应用)

Linux:常用性能检查命令(内存、CPU 、网络、磁盘、Java应用)_琦彦的博客-CSDN博客_linux检查命令

硬件时钟, 系统时钟, 网络时钟, 时区修改和同步
​​

 参考Linux: 硬件时钟, 系统时钟, 网络时钟, 时区修改和同步_琦彦的博客-CSDN博客_硬件时钟

systemctl命令 

systemctl 提供了一组子命令来管理单个的 unit,其命令格式为:
systemctl [command] [unit]
command 主要有:
start:立刻启动后面接的 unit。
stop:立刻关闭后面接的 unit。
restart:立刻关闭后启动后面接的 unit,亦即执行 stop 再 start 的意思。
reload:不关闭 unit 的情况下,重新载入配置文件,让设置生效。
enable:设置下次开机时,后面接的 unit 会被启动。
disable:设置下次开机时,后面接的 unit 不会被启动。
status:目前后面接的这个 unit 的状态,会列出有没有正在执行、开机时是否启动等信息。
is-active:目前有没有正在运行中。
is-enable:开机时有没有默认要启用这个 unit。
kill :不要被 kill 这个名字吓着了,它其实是向运行 unit 的进程发送信号。
show:列出 unit 的配置。
mask:注销 unit,注销后你就无法启动这个 unit 了。
unmask:取消对 unit 的注销。

 通过 systemctl  --help 产看更多

Linux查找最近修改的文件

查找当前目录下.phtml文件中,最近30分钟内修改过的文件。

find . -name ‘*.phtml -type f -mmin -30

查找当前目录下.phtml文件中,最近30分钟内修改过的文件,的详细情况

find . -name ‘*.phtml -type f -mmin -30 -ls

查找当前目录下,最近1天内修改过的常规文件。

find . -type f -mtime -1

查找当前目录下,最近1天前(2天内)修改过的常规文件。

find . -type f -mtime +1

Linux系统文件有三个主要的时间属性,分别是 ctime(change time), atime(access time), mtime(modify time)。
 

这三个时间很容易混淆,准备深入了解linux的童鞋请区分这三者的区别

atime:Access time,

是在读取文件或者执行文件时更改,即文件最后一次被读取的时间。



说明: st_atime

Time when file data was last accessed. Changed by the

following functions: creat(), mknod(), pipe(),

utime(2), and read(2).

mtime:Modified time,



是在写入文件时随文件内容的更改而更改,是指文件内容最后一次被修改的时间。



说明: st_mtime

Time when data was last modified. Changed by the fol-

lowing functions: creat(), mknod(), pipe(), utime(),

and write(2).

ctime:Change time,



是在写入文件、更改所有者、权限或链接设置时随 Inode 的内容更改而更改,即文件状态最后一次被改变的时间。



说明: st_ctime



Time when file status was last changed. Changed by the

following functions: chmod(), chown(), creat(),

link(2), mknod(), pipe(), unlink(2), utime(), and

write().



很多人把它理解成create time,包括很多误导人的书籍也是这么写。实际上ctime是指change time。



注意:

1、修改是文本本身的内容发生了变化(mtime)

 改变是文件的索引节点发生了改变(ctime)

2、如果修改了文件内容,则同时更新ctime和mtime

3、如果只改变了文件索引节点,比如修改权限,则只是改变了ctime

4、如果使用ext3文件系统的时候,在mount的时候使用了noatime参数则不会更新atime的信息,

即访问文件之后atime不会被修改,而这个不代表真实情况



小知识:这三个 time stamp 都放在 inode 中。若mtime,atime修改, 

inode 就一定会改,相应的inode改了,那ctime 也就跟着要改了,之所以在mount option中使用 noatime, 

就是不想 file system 做太多的修改, 从而改善读取性能.

查看文件的 atimectime mtime

# ls -lc filename 列出文件的 ctime

# ls -lu filename 列出文件的 atime

# ls -l filename 列出文件的 mtime

关机

  • shutdown 是安全的方式关闭系统。

    • shutdown -k  +5                      并非真正关机,只是向用户发出警告信息“离关机还有五分钟”
    • shutdown -k                           向用户发出警告信息“离关机还有一分钟”,默认延时一分钟。
    • shutdown -h                           关机,默认延迟一分钟。
    • shutdown -h  60                     60分钟后关机
    • shutdown -h now                    立刻关机。
    • shutdown -h 12:00                 在12:00关机
    • shutdown -r                            重启,默认延迟一分钟。
    • shutdown -r 50                       重启,延迟50分钟。
    • shutdown -r now                    立刻重启。
    • shutdown -r 22:00                 22:00重启。
    • shutdown -c                          取消一切关机 和 重启命令的执行。
    • shutdown -f                          重启时跳过磁盘检测。
    • shutdown -F                         重启时强制磁盘检测。
  • systemctl

    • systemctl halt                       关CPU,但是不关电源 。
    • systemctl poweroff               关机关电源,真正的关机。
    • systemctl reboot                  重启
  • 以上关机命令必须在ROOT用户下执行。

  • 在执行关机之前,执行一下sync命令。

    • sync                                    将磁盘缓冲区的数据同步到硬盘中,以免数据丢失。在关机重启前都要执行。

  Linux下查看文件和文件夹大小的df和du命令

当磁盘大小超过标准时会有报警提示,这时如果掌握dfdu命令是非常明智的选择。

df可以查看一级文件夹大小、使用比例、档案系统及其挂入点,但对文件却无能为力。

du可以查看文件及文件夹的大小。

[root@localhost ~]# df #列出各文件系统的磁盘空间使用情况 

[root@localhost ~]# df -ia #列出各文件系统的i节点使用情况
[root@localhost ~]# df -T #列出文件系统的类型
[root@localhost ~]# df -h #目前磁盘空间和使用情况 以更易读的方式显示
[root@localhost ~]# df -k #以单位显示磁盘的使用情况

[root@rudder ~]# du #查看当前目录下的,所有文件和目录

[root@rudder ~]# du -ah #详细查看当前目录,子目录下的,所有文件和目录
[root@rudder ~]# du test.bz2 #查看单个文件
[root@bsso yayu]# du -h --max-depth=1 work/testing
  • du 统计文件大小相加
  • df 统计数据块使用情况

 根据端口号查询进程pid

netstat -nptl

netstat -nptl |grep 8082

常见参数

  • -a (all)显示所有选项,默认不显示LISTEN相关
  • -t (tcp)仅显示tcp相关选项
  • -u (udp)仅显示udp相关选项
  • -n 拒绝显示别名,能显示数字的全部转化成数字。
  • -l 仅列出有在 Listen (监听) 的服務状态
  • -p 显示建立相关链接的程序名
  • -r 显示路由信息,路由表
  • -e 显示扩展信息,例如uid
  • -s 按各个协议进行统计
  • -c 每隔一个固定时间,执行该netstat命令。

提示:LISTENLISTENING的状态只有用-a或者-l才能看到

 pstree以树结构显示进程

pstree -aup |grep tomcat

 删除文件  

rm filename (rm -r 删除文件夹 rm -rf 强制删除文件或文件夹)

移动文件  修改文件名

mv a/wenjian1.txt b/file1.txt (移动文件的同时还修改了文件名)

tar 文件、目录打(解)包

tar -xzvf testdir.tar.gz 解压到当前目录下

tar -zxvf testdir.tar.gz -C Downloads/ 解压到指定的Downloads目录下

  • -c 建立一个压缩文件的参数指令(create
  • -x 解开一个压缩文件的参数指令(extract
  • -z 是否需要用 gzip 压缩
  • -j 是否需要用 bzip2 压缩
  • -v 压缩的过程中显示文件(verbose
  • -f 使用档名,在 f 之后要立即接档名(file

 jinfo用法

  • jinfojdk自带的命令,用来查看jvm的配置参数。通常会先使用jps查看java进程的id,然后使用jinfo查看指定pidjvm信息

查看所有的参数

jinfo process_id

查看jvm的参数

jinfo -flags process_id

查看java系统参数

jinfo -sysprops process_id

 防火墙&开放端口

Centos 7 firewall 命令:

查看已经开放的端口:

firewall-cmd --list-ports

开启端口

firewall-cmd --zone=public --add-port=80/tcp --permanent

命令含义:

zone #作用域

add-port=80/tcp #添加端口,格式为:端口/通讯协议

permanent #永久生效,没有此参数重启后失效

重启防火墙

firewall-cmd --reload #重启firewall

systemctl stop firewalld.service #停止firewall

systemctl disable firewalld.service #禁止firewall开机启动

CentOS 7 以下版本 iptables 命令

---如要开放80228080 端口,输入以下命令即可【命令方式】

/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT

/sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT

/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT

---如要开放80 端口,输入以下命令即可【手动方式】

   vi /etc/sysconfig/iptables  打开配置文件加入如下语句:      -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT   重启防火墙,修改完成

然后保存:

/etc/rc.d/init.d/iptables save

重启防火墙,修改生效

 service iptables restart    

查看打开的端口:

/etc/init.d/iptables status

关闭防火墙

1 永久性生效,重启后不会复原

开启: chkconfig iptables on

关闭: chkconfig iptables off

2 即时生效,重启后复原

开启: service iptables start

重启: service iptables restart

关闭: service iptables stop

状态: service iptables status

  • 需要说明的是对于Linux下的其它服务都可以用以上命令执行开启和关闭操作。

 查看文本文件内容 

cat wodeqingshu.txt

more wodeqingshu.txt 可以分页看

less wodeqingshu.txt 不仅可以分页,还可以方便地搜索,回翻等操作

空格--翻页;向下/上的箭头----上下翻行;shift+g--文件末尾;gg--文件开始;

先按冒号,再按“/关键字”---搜索

tail -10 wodeqingshu.txt 查看文件的尾部的10

程序打出的日志在生产实践中具有非凡的debug的意义

tail -f user.log 实时刷新显示文件的尾部

head -20 wodeqingshu.txt 查看文件的头部20

Vim编辑器

1.1 Vi简介

  • vi / vim Unix / Linux上最常用的文本编辑器而且功能非常强大。
  • 只有命令,没有菜单。

Vim工作模式:

1.2 编辑使用的快捷键

i 在光标前插入

I 在光标当前行开始插入

a 在光标后插入

A 在光标当前行末尾插入

o 在光标当前行的下一行插入新行

O 在光标当前行的上一行插入新行

yy复制当前行

yw复制一个单词

y$复制光标到结尾

y^复制光标到行首

#yy复制#行

#yw复制#个单词

m,ny复制mn行内容

粘贴在命令模式下,将光标移动到将要粘贴的行处,按“p”进行粘贴

1.3 Vi编辑定位使用命令

:set nu 显示行号

:set nonu 取消行号

gg 到文本的第一行

G 到文本的最后一行

o 新建一行

:n 到文本的第n

1.4 删除键及命令

x 删除光标所在处字符

nx 删除光标所在处后的n个字符

dd 删除光标所在行。ndd删除n

dG 删除光标所在行到末尾行的所以内容

D 删除光标所在处到行尾的内容

:n1,n2d 删除指定范围的行

1.5 替换和取消命令及键

u undo,取消上一步操作

Ctrl + r redo,返回到undo之前

r 替换光标所在处的字符

R 从光标所在处开始替换,按Esc键结束

Shift+ zz 保存退出,与“:wq”作用相同

v 进入字符可视模式(选中)

V Shift + v 进入行可视模式(整行选中)

Ctrl + v 进入块可视模式(按照块选中)

1.6 查找

命令模式下,输入 /word 后回车,即查找word

n 查找下一个匹配单词,按 N 查找上一个匹配单词。

/后跟查找的字符串。vim会显示文本中第一个出现的字符串。

?后跟查找的字符串。vim会显示文本中最后一个出现的字符串。

清理空间

 清理内存

# 一.查看内存
free -h

#  二.清理缓存
# (1)清理缓存前先用 sync 命令
sync

# (2)输入手动释放内存的命令

echo 3 > /proc/sys/vm/drop_caches

# 0 – 不释放
# 1 – 释放页缓存 (数字1是用来清空最近访问过的文件页面缓存)
# 2 – 释放dentries和inodes (数字2是用来清空文件节点缓存和目录项缓存)
# 3 – 释放所有缓存 (数字3是用来清空1和2所有内容的缓存。)

清理磁盘

# 一.查看磁盘
# (1)查看磁盘使用情况

df -h

# (2)进入磁盘100%使用的分区,查看目录使用情况

du -h --max-depth=1

# (3)指定删除后缀文件

find . -name '*.txt' -exec rm -rf {} \;    如递归删除.txt格式的文件

# 二.docker
(1)docker空间查看

docker system df

# (2)docker清理

# 普通清理
docker system prune
# 深度清理,谨慎使用
docker system prune -a

# (3)未使用的镜像清理

docker image prune -a

# (4)删除未被使用的数据卷

docker volume prune

# (4)删除状态为Exited的容器,删除未使用的镜像/容器
docker rm `docker ps -a|grep Exited|awk '{print $1}'`
docker image prune -a -f; docker container prune -f;