linux常用命令(ing)
【linux命令】持续更新
find命令
什么是 find 命令?
find
命令用于在指定的目录下搜索文件和目录。它提供了丰富的搜索条件和选项,可以根据文件名、文件类型、文件大小、修改时间等属性进行搜索。find
命令通常用于查找特定文件或根据条件进行批量操作。
find命令通常进行的是从根目录 /
开始的全盘搜索,所以不要在高峰时期使用 find
命令。
如何使用 find 命令?
find
命令的使用相对较复杂,但掌握了基本语法后,你就能灵活使用它。
基本语法:
find 目录路径 [选项参数] [搜索条件]
- 目录路径:指定要查找的目录路径。
- 选项参数:用于指定匹配条件,例如文件名、类型。
- 搜索条件:用于指定要搜索的文件和目录,满足这个条件的就会被搜索出来。
举例说明
假设我们想找到在 /opt/games
目录下所有以 .txt
扩展名结尾的文件,则可以使用以下命令:
find /opt/games -name "*.txt"
这将在 /opt/games
目录及其子目录中搜索所有以 .txt
结尾的文件,并将它们列出。
常用选项参数
-name
:按文件名进行匹配。-type
:按文件类型进行匹配。-size
:按文件大小进行匹配。-user
:按文件所属用户进行匹配。-mtime
:(modified)按文件最后内容的修改时间进行匹配。-perm
:(permission)按文件权限进行匹配。
按权限进行匹配
这里先说下,-perm
后面的内容使用数字或符号来表示文件权限,举个例子 /u+rw
,这里的 /u
表示用户(所有者)权限,rw
表示具有读写权限,中间的 +
用来表示「具有」
还有其他几个字母:
/g
,组(group)权限;/o
,(other)其他用户权限;/a
,(all)所有用户权限。读写可执行:
r
(read),w
(write),x
(execute)
-
表示没有:比如/u-rw
,指用户没有读写权限
- 搜索当前目录及其子目录下所有具有读写权限的文件(目录):
find /opt -perm /u+rw
grep
什么是 grep 命令?
grep
命令是 global regular expression print
的缩写,用于在文件、多个文件或输入流中进行正则匹配,它会匹配我们在命令行中指定的「文本模式」(Pattern),并将结果输出打印。
换句话说,它会按我们提供的文本模式去搜索文件的内容。
如何使用 grep 命令?
grep
命令的使用非常简单,你只需在终端中输入 grep
,并指定要搜索的模式和文件名。
基本语法:
grep [选项参数] 文本模式 文件名
举例说明
现在我们在 opt/games/gta6
目录下,有一个名为 readme.txt
的文件,像搜索里面包含关键字 "VI
" 的行,那么可以使用以下命令:
grep "VI" readme.txt
这将在文件中查找包含 "VI
" 的行,并将其打印输出。
常用选项参数
-i
:(ignore)忽略大小写进行匹配。-n
:(number)显示匹配行的行号。-v
:(reverse)反向匹配,打印不包含模式的行。-r
:(recursive)递归搜索指定目录及其子目录下的文件。- 在
readme.txt
中搜索 "vi
",忽略大小写: -
grep -i "vi" readme.txt
在标准输入流中搜索指定模式
基本写法:
command | grep pattern
这里,command
是生成输出的命令,pattern
是要搜索的模式,|
是管道符,可以将两个命令分隔开,|
左边命令的输出就会作为 |
右边命令的输入
比如在读取 show.txt
的时候搜索 god23bin
:
cat show.txt | grep god23bin
这种用法,我一般是在大量日志输出中想找到错误信息的时候会用到:
tail -2000f project-test.log | grep -i error
====================
查进程命令
ps -ef 查所有的进程
ps -elf
- -e:显示系统内的所有进程信息。
- -l:使用长(long)格式显示进程信息。
- -f:使用完整的(full)格式显示进程信息。
ps -ef|grep 进程名 查看进行运行情况
ps aux
- a:显示当前终端下的所有进程信息,包括其他用户的进程。
- u:使用以用户为主的格式输出进程信息。
- x:显示当前用户在所有终端下的进程。
top
以全屏交互式的界面显示进程排名,及时跟踪包括CPU、内存等系统资源占用情况,默认情况下每三秒刷新一次,其作用基本类似于Windows系统中的任务管理器。
pstree -aup
以树状图的方式展现进程之间的派生关系,显示效果比较直观。 -a:显示每个程序的完整指令,包含路径,参数或是常驻服务的标示; -c:不使用精简标示法; -G:使用VT100终端机的列绘图字符; -h:列出树状图时,特别标明现在执行的程序; -H<程序识别码>:此参数的效果和指定”-h”参数类似,但特别标明指定的程序; -l:采用长列格式显示树状图; -n:用程序识别码排序。预设是以程序名称来排序; -p:显示程序识别码; -u:显示用户名称;
拷贝文件
cp /root/test.sh /mnt/test //将root路径下的test.sh文件拷贝到/mnt/test路径下
cp /root/test.txt /mnt/test/file.txt //将/root路径下的test.txt文件拷贝到/mnt/test/路径下,并修改文件名为file.txt,若存在同名文件将其同名文件覆盖
拷贝文件夹
cp -r /root/test /mnt/file //将/root路径下的test文件夹拷贝到/mnt/file文件夹中
cp -rf /root/file /mnt/file //将root目录下的file文件夹及目录下的所有文件拷贝到/mnt目录下并覆盖已有的file文件夹
查日志命令
tail -f XX.log 退出 ctrl+z
less XX.log 退出q/Q
查找: /+关键字
===============
看日志
查看日志命令原文链接:https://blog.csdn.net/weixin_48502745/article/details/120031663
1 查看当前日志
方法1: 进入日志文件所在目录, 再进行查看日志
例如你的日志文件在 根目录 下的 logs 目录下的 app_logs 目录中,日志文件名称叫做 biz-service.log
#1 进入日志文件所在目录
cd /logs/app_logs
#2 再进行查看日志
less biz-service.log
方法2: 通过路径直接查看当前日志
例子+命令:
例如你的日志文件在 根目录 下的 logs 目录下的 app_logs 目录中,日志文件名称叫做 biz-service.log
less /logs/app_logs/biz-service.log
3 Tips:
可以使用 pwd 查看你现在的位置, 以此决定要不要从根目录出发, 按个人喜好, 不是必输项.
例子+命令:
例如你的日志文件在 根目录 下的 logs 目录下的 app_logs 目录中,日志文件名称叫做 biz-service.log
[LiArun@Localhost]$pwd
/logs
# 现在位于 logs 目录中
所以你可以把 从根目录 换成 从当前位置(logs目录) 出发
# 直接使用:
less app_logs/biz-service.log
# 或者
#1 进入目录
cd app_logs
#2 查看日志
less biz-service.log
2 操作当前日志
2.1 上下翻页
按键: pageup/pagedown
2.2 上下翻行
按键: ↓/↑键
2.3 搜索关键字
1 从当前位置向下搜索:
关键字内容是中英文都可以
1,输入: /+关键字, 按 回车键
2, 配合按键 n/N 使用
n: 查看当前关键字的上一个位置
N: 查看当前关键字的下一个位置
2 从当前位置向上搜索:
1,输入: ?+关键字, 按 回车键
2, 配合按键 n/N 使用
n: 查看当前关键字的下一个位置
N: 查看当前关键字的上一个位置
Tips:
可以配合按键 g/G 使用, 效果更佳
g: 到达当前日志文件头部位置
G: 到达当前日志文件尾部位置
2.4 在 less 命令下, 退出当前日志文件
按键 q/Q 都可
2.5 实时查看日志
方法1: 使用 tail -f 命令
例子:
例如你的日志文件在 根目录 下的 logs 目录下的 app_logs 目录中,日志文件名称叫做 biz-service.log
tail -f /logs/app_logs/biz-service.log
# 按键 ctrl+c 即可退出实时
# 按键 ctrl+z 即可退出实时
方法2: 在 less 命令下操作
背景:
当你使用 less命令 查看日志, 又不想退出去再使用 tail -f 命令时
操作:
只需要 按键F 即可, 此时与 tail -f 的效果一样, 按键 ctrl+c 退出, 回到 less 命令
按键 q/Q 退出 less 命令
2.6 查看历史日志
例子+命令:
例如你的日志文件在 根目录 下的 logs 目录下的 app_logs 目录中,日志文件名称叫做 biz-service-09-01-2021.gz
zless /logs/app_logs/biz-service-09-01-2021.gz
===============
top 命令
Linux top命令用于实时显示 process 的动态。 这样主机窗口挂起来了; 退出:ctrl+z
sftp命令
SFTP(Secure File Transfer Protocol,安全文件传输协议)是一种基于可靠数据流(data stream),提供文件存取和管理的网络传输协议
与 FTP 协议相比,SFTP 在客户端与服务器间提供了一种更为安全的文件传输方式,如果你还在使用 FTP 来进行文件传输,强烈建议切换到更为安全的 SFTP 上来。
目前已经有很多 GUI 客户端支持 SFTP 协议。
二、使用 SFTP 进行连接
因为 SFTP 是基于 SSH 协议的,所以默认的身份认证方法与 SSH 协议保持一致。通常我们使用 SSH Key 来进行连接,如果你已经可以使用 SSH 连接到远程服务器上,那么可以使用以下命令来连接 SFTP:
sftp user_name@remote_server_address[:path]
如果远程服务器自定义了连接的端口,可以使用 -P 参数:
sftp -P remote_port user_name@remote_server_address[:path]
连接成功后将进入一个 SFTP 的解释器,可以发现命令行提示符变成了 sftp>,使用 exit 命令可以退出连接。
如果连接地址存在 path 并且 path 不是一个目录,那么 SFTP 会直接从服务器端取回这个文件。
三、连接参数详解
-B: buffer_size,制定传输 buffer 的大小,更大的 buffer 会消耗更多的内存,默认为 32768 bytes;
-P: port,制定连接的端口号;
-R: num_requests,制定一次连接的请求数,可以略微提升传输速度,但是会增加内存的使用量。
命令示例:
- 登陆远程主机:
sftp user@host
- 针对本机的命令都加上l:
lcd,lpwd
- 将本机文件上传到远程:
put filename.txt [some/directory]
- 将当前文件夹下的文件上传到远程:
mput *.* // multiple
- 下载远程文件到本地:
get filename.file [some/directory]
- 下载目录下所有远程文件到本地:
mget *.* [some/directory]
- 帮助:
?
- 退出:
bye/exit/quit
四、目录管理
在 SFTP 解释器中可以使用 help 命令来查看帮助文档。
SFTP 解释器中预置了常用的命令,但是没有自带的 Bash 来得丰富。
编辑文件命令:
linux修改文件的命令:
1、“vi”或“vim”命令,可用于修改文件的内容;
2、“mv”命令,可用于修改文件的名称;
3、“chmod”、“chgrp”、“chown”命令,可用于修改文件的权限;
4、“touch”命令,可修改文件的时间。
linux修改文件的内容
命令是:vi
,vim
-
vi 编辑器,相当于记事本,有编辑功能,但较弱
-
vim 复杂的编辑器,相当于windows的 editplus, notepad++ 等
步骤:
1、执行 vi world.txt
进入编辑器(默认命令模式),
2、点击a或i进入编辑模式,敲入内容:hello linux world !
3、然后按键盘上的esc键退出编辑模式(进入到命令模式),
4、最后敲冒号:wq保存并退出。
5、在命令模式输入:冒号,就进入末行模式 ,就能执行保存、退出、强制命令
保存退出形式(命令前面冒号是必要的):
:w 保存文件但不退出vi
:w file 将修改另外保存到file中,不退出vi
:w! 强制保存,不推出vi
:wq 保存文件并退出vi
:wq! 强制保存文件,并退出vi
:q 不保存文件,退出vi
:q! 不保存文件,强制退出vi
:e! 放弃所有修改,从上次保存文件开始再编辑
touch命令
简介:
touch命令用于修改文件或者目录的时间属性,包括访问时间和修改时间,若文件不存在,系统会建立一个新的文件。
语法格式:
touch [-acfm][-d<日期时间>][-r<参考文件或目录>] [-t<日期时间>][--help][--version][文件或目录…]
例子:
补充:
1.stat XXX 查看这个目录所有文件的状态。
Access访问时间。Modify修改时间。Change状态改变时间。
2.每个文件在Linux下面都会记录3个主要的修改时间:
• modification time(mtime,修改时间):当文件“内容数据”(指文件里面的内容,而不是属性或权限)更改时,这个时间会更新。
• status time(ctime,状态时间):当文件的“状态”(权限或者属性)改变时,这个时间会更新。
• access time(atime,存取时间):当“该文件内容被取用”(例如使用cat读取了)时,会更新该时间。
(注:ls默认情况下显示的是mtime)
原文链接:https://blog.csdn.net/weixin_41280381/article/details/123899254
=========
mv 就是move 移除命令
mv命令是“move”单词的缩写,见名思意,可以移动文件或对其改名。
这是一个使用频率超高的文件管理命令,但是要留意它与复制的区别。
mv命令是文件的路径发生变化或文件名称发生改变,但个数不会增加。而cp命令是对文件进行的复制操作,文件个数是有增加的。
1.mv file dir 将文件移动到文件夹内
2.mv –i 若存在同名文件,则向用户询问是否覆盖
3.mv –f 覆盖已有文件时,不进行任何提示
4.mv –b 当文件存在时,覆盖前为其创建一个备份
5.mv –u 当源文件比目标文件新,或者目标文件不存在时,才执行移动此操作
6.mv file_1 file_2 将文件file_1重命名为file_2
7.mv /dir1 /dir2 将目录dir1移动目录dir2中(前提是目录dir2已存在,若不存在则改名)
8.mv /dir1/ . 将目录dir1下的文件移动到当前目录下*
原文链接:https://blog.csdn.net/c_xiazai12345/article/details/115767485
=====================================
sudo命令
1、sudo 简介
sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。sudo不是对shell的一个代替,它是面向每个命令的。(百度百科)
su 命令
su是最简单的身份切换命令,一般都是su - username,然后输入password就ok了,root用su至其他用户无须密码;但非root用户切换时需要密码。切换到root可以使用su -和su - root。
-
切换用户的方式:
su UserName:非登录式切换,即不会读取目标用户的配置文件
su - UserName:登录式切换,会读取目标用户的配置文件;完全切换 -
换个身份执行命令:
su [-] UserName -c ‘COMMAND’
选项:
-l:“su -l UserName”相当于“su - UserName”
-c: 仅执行一次命令,而不切换用户身份
2、sudo的特性
- sudo 能够授权指定用户在指定主机上运行某些命令。 如果未授权用户尝试使用 sudo,会提示联系管理员。
- sudo 可以提供日志,记录每个用户使用sudo操作,以便于日后审计。
- sudo 为系统管理员提供配置文件,允许系统管理员集中地管理用户的使用权限和使用的主机。
- sudo 默认存活期为5分钟。
编辑配置文件的方式
# sudoedit /etc/sudoers
# vim /etc/sudoers
# visudo
visudo –c 命令具有语法检查功能,和crontab -e编辑后退出检查语言功能类似。
3、sudo相关文件
配置文件: /etc/sudoers, /etc/sudoers.d/
时间戳文件: /var/db/sudo
日志文件: /var/log/secure
配置文件支持使用通配符glob:
?:任意单一字符
* :匹配任意长度字符
[wxc]:匹配其中一个字符
[!wxc]:除了这三个字符的其它字符
\x : 转义
[[alpha]] :字母 示例: /bin/ls [[alpha]]*
配置文件规则有两类
- 别名定义:不是必须的,别名必须全部而且只能使用大写英文字母的组合
- 授权规则:必须的
- 用户别名
4、sudo语法
-
who which_hosts=(runas) command
被管理主机地址【访问主机】
允许哪一个用户,执行某一条命令在哪一台主机上
谁(who)能够以哪个用户(runas)的身份通过什么主机(which host)执行什么命令(command)。user: 运行命令者的身份
host: 通过哪些主机
(runas): 以哪个用户的身份
command: 运行哪些命令 -
sudo授权示例
user1 ALL=(root) NOPASSWD: /usr/sbin/useradd, /usr/sbin/usermod -
常用的标签
PASSWD:执行被授权的命令之前,必须输入密码进行身份验证
NOPASSWD:执行被授权的命令之前,无需输入密码进行身份验证
注意:PASSWD、NOPASSWD等标签只能在授权项中使用,不能在别名中使用。
5、sudo命令
sudo -u centos 切换身份
-V 显示版本信息等配置信息
-u user 默认为root
-l 列出当前用户可以使用的所有sudo命令
-v 再延长密码有效期限5分钟,更新时间戳
-k 认证信息失效,清除时间戳(1970-01-01),下次需要重新输密码
-b 在后台执行指令
6、总结
-
su方式切换是须要输入目标用户的password。而sudo仅仅须要输入自己的password,所以sudo能够保护目标用户的password不对外泄漏。
-
sudo授权时passwd,su,sudo,sudoedit,visudo等具有特殊意义的命令时,务必要考虑全面(例如禁止修改root用户的密码等操作)。
-
仔细看了sudo的配置文件发现sudo的which_hosts表示允许哪一个IP地址或网络访问当前主机,这种说法不对。通常能用到这个参数的场景不多,一般在有NIS服务或集中管理的时候,其实就是管理所有主机的管理策略在一台主机上编辑sudoers这个文件,然后将它推到所有主机。
man帮助文件显示该参数的正确含义:
#jack可以运行任何命令在定义地CSNET(128.138.243.0, 128.138.242.0和128.138.204.0/24的子网)中,不过注意前两个不需要匹配子网掩码因为是本地主机地址,而最后一个必须匹配掩码因为是网络地址。
jack CSNETS = ALL
#lisa可以运行任何命令在定义为CUNETS(128.138.0.0)的子网中主机上。
lisa CUNETS = ALL
=============================
【Linux】创建文件链接(ln | 符号链接和硬链接)
本文将介绍如何在 Linux 中为文件创建硬练级和符号(软)链接,并探讨两者之间的相同和不同之处。
引言
符号链接与 Windows 中的快捷方式很像。Windows 中的快捷方式是一个带箭头的图标,空间占用一般很小,仅仅提供了一个指向目标文件的通道,Linux 中的符号链接也类似。符号链接应用很灵活,可以为任意文件创建符号链接。
原文链接:https://blog.csdn.net/qq_42951560/article/details/125157093