[h1]命令相关[/h1]
linux命令存储以下位置:
- /bin(指向/usr/bin)目录,包含基本的用户命令,默认全体用户都可使用,例如
curl
,ls
命令 - /sbin(指向/usr/sbin),/usr/local/sbin,存放需要root权限的命令以及工具,默认root用户使用,例如
ip
,halt
命令 - /usr/local/bin 给用户放置自己的可执行程序的地方,不会被系统升级覆盖
- /usr/local/sbin 给管理员放置自己的可执行程序的地方,不会被系统升级覆盖
如果在每个命令目录都存在某个命令时,通过系统的$PATH
变量决定优先级
echo $PATH
# 每台电脑输出不同,/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/protobuf/bin/:/root/bin
所以,当输入 ls 命令,点击回车时,系统会以此从各个目录找到这个命令文件,然后执行该文件.
如果你的程序命令没有放在以上文件夹,我们也可通过相对路径以及绝对路径启动该命令:
./php -m #当你在php命令文件目录中时,
/www/server/php/72/bin/php -m,宝塔php命令目录
根据这个原理,我们可以安装多个php版本,并启动
/www/server/php/72/bin/php -m
/www/server/php/56/bin/php -m
软件安装:
- ./configure:这个命令是配置脚本,它检查你的系统环境,确保所有必要的依赖和工具都已安装,并准备编译软件所需的配置。用户可以通过–prefix参数指定安装目录,这样软件就会被安装到你指定的位置,而不是默认的系统目录。
- make:这个命令会根据configure脚本生成的Makefile来编译源代码。Makefile包含了编译和链接源代码所需的所有指令。make命令会检查依赖关系,并且只编译那些自上次编译以来已经发生变化的部分。这个过程可能会涉及多个步骤,包括编译(将源代码转换成机器码)和链接(将编译后的代码与其他库链接在一起以创建可执行文件)。
- make install:这个命令会运行Makefile中的install目标,它负责将编译后的文件复制到正确的位置。通常,这个步骤需要管理员权限,因为它涉及到写入系统目录(如果你没有使用–prefix指定一个用户目录)。使用make install会将软件安装到你在configure步骤中指定的目录。
[error title=”提示”]./config:这个脚本通常是特定软件包提供的,用于配置编译选项。它可能是一个旧的或特定于该软件的配置脚本。[/error]
[h2]1. 修改环境变量[/h2]
# 临时改变,只能在当前的终端窗口中有效,当前窗口关闭后就会恢复原有的path配置
$ export PATH=/usr/local/mongodb/bin:$PATH
# 永久有效,仅对当前用户
# 编辑
$ vim ~/.bashrc
# 最后一行加上
export PATH=/usr/local/mongodb/bin:$PATH
# 读取并执行文件中的命令
$ source ~/.bashrc
# 修改profile,对所有用户生效(所有用户登录都会使用该文件构建用户环境)
$ vim /etc/profile
$ export PATH=/usr/local/mongodb/bin:$PATH
[h1]基本语法[/h1]
[h2]1. “;”分号用法[/h2]
方式:command1 ; command2
用;号隔开每个命令, 每个命令按照从左到右的顺序,顺序执行, 彼此之间不关心是否失败, 所有命令都会执行。
[h2]2. “| ”管道符用法[/h2]
上一条命令的输出,作为下一条命令参数
方式:command1 | command2
Linux所提供的管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入。连续使用管道意味着第一个命令的输出会作为 第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推
利用一个管道# rpm -qa|grep licq
这条命令使用一个管道符“|”建立了一个管道。管道将rpm -qa命令的输出(包括系统中所有安装的RPM包)作为grep命令的输入,从而列出带有licq字符的RPM包来。
[h2]3. “||”符号用法[/h2]
逻辑或的功能
语法格式如下:
command1 || command2 [|| command3 …]
命令之间使用 || 连接,实现逻辑或的功能。
只有在 || 左边的命令返回假(命令返回值 $? == 1),|| 右边的命令才会被执行。这和 c 语言中的逻辑或语法功能相同,即实现短路逻辑或操作。
[h2]4. “&”符号用法[/h2]
&放在启动参数后面表示设置此进程为后台进程
方式:command1 &
默认情况下,进程是前台进程,这时就把Shell给占据了,我们无法进行其他操作,对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动参数的时候加一个’&’实现这个目的。
[h2]5. “&&”符号用法[/h2]
shell 在执行某个命令的时候,会返回一个返回值,该返回值保存在 shell 变量 $? 中。当 $? == 0 时,表示执行成功;当 $? == 1 时(我认为是非0的数,返回值在0-255间),表示执行失败。
有时候,下一条命令依赖前一条命令是否执行成功。如:在成功地执行一条命令之后再执行另一条命令,或者在一条命令执行失败后再执行另一条命令等。shell 提供了 && 和 || 来实现命令执行控制的功能,shell 将根据 && 或 || 前面命令的返回值来控制其后面命令的执行。
语法格式如下:
command1 && command2 [&& command3 …]
命令之间使用 && 连接,实现逻辑与的功能。
只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才会被执行。
只要有一个命令返回假(命令返回值 $? == 1),后面的命令就不会被执行。
[h2]6. linux > 和 >> 、< 区别[/h2]
linux中经常会用到将内容输出到某文件当中,只需要在执行命令后面加上>或者>>号即可进入操作。
大于号:将一条命令执行结果(标准输出,或者错误输出,本来都要打印到屏幕上面的)重定向其它输出设备(文件,打开文件操作符,或打印机等等)
小于号:命令默认从键盘获得的输入,改成从文件,或者其它打开文件以及设备输入
>> 是追加内容
> 是覆盖原有内容
参考:https://www.cnblogs.com/fnlingnzb-learner/p/6839669.html
[h1]网络工具[/h1]
它不依赖内核中的模块。当我们的服务器网络异常时,可以通过运行nethogs程序来检测是那个程序占用了大量带宽。节省了查找时间。
yum install nethogs
nethogs
sysstat
iostat -x 1 10
[h1]测压工具[/h1]
[h2]1. 安装[/h2]
如果不想安装apache但是又想使用ab命令,可以直接安装apache的工具包httpd-tools。
#安装
yum -y install httpd-tools
#使用
ab [options] [http[s]://]hostname[:port]/path
[h2]2. 命令参数[/h2]
-A auth-username:password
对服务器提供BASIC认证信任。 用户名和密码由一个:隔开,并以base64编码形式发送。 无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。
-c concurrency
一次产生的请求个数。默认是一次一个。
-C cookie-name=value
对请求附加一个Cookie:行。 其典型形式是name=value的一个参数对。 此参数可以重复。
-d 显示”percentage served within XX [ms] table”的消息(为以前的版本提供支持)。
-e csv-file
产生一个以逗号分隔的(CSV)文件, 其中包含了处理每个相应百分比的请求所需要(从1%到100%)的相应百分比的(以微妙为单位)时间。 由于这种格式已经“二进制化”,所以比’gnuplot’格式更有用。
-g gnuplot-file
把所有测试结果写入一个’gnuplot’或者TSV (以Tab分隔的)文件。 此文件可以方便地导入到Gnuplot, IDL, Mathematica, Igor甚至Excel中。 其中的第一行为标题。
-h 显示使用方法。
-H custom-header
对请求附加额外的头信息。 此参数的典型形式是一个有效的头信息行,其中包含了以冒号分隔的字段和值的对 (如, “Accept-Encoding: zip/zop;8bit”).
-i 执行HEAD请求,而不是GET。
-k 启用HTTP KeepAlive功能,即, 在一个HTTP会话中执行多个请求。 默认时,不启用KeepAlive功能.
-n requests
在测试会话中所执行的请求个数。 默认时,仅执行一个请求,但通常其结果不具有代表意义。
-p POST-file
包含了需要POST的数据的文件.
-P proxy-auth-username:password
对一个中转代理提供BASIC认证信任。 用户名和密码由一个:隔开,并以base64编码形式发送。 无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。
-q 如果处理的请求数大于150, ab每处理大约10%或者100个请求时,会在stderr输出一个进度计数。 此-q标记可以抑制这些信息。
-s 用于编译中(ab -h会显示相关信息)使用了SSL的受保护的https, 而不是http协议的时候。此功能是实验性的,也是很简陋的。最好不要用。
-S 不显示中值和标准背离值, 而且在均值和中值为标准背离值的1到2倍时,也不显示警告或出错信息。 默认时,会显示 最小值/均值/最大值等数值。(为以前的版本提供支持).
-t timelimit
测试所进行的最大秒数。其内部隐含值是-n 50000。 它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。
-T content-type
POST数据所使用的Content-type头信息。
-v verbosity
设置显示信息的详细程度 - 4或更大值会显示头信息, 3或更大值可以显示响应代码(404, 200等), 2或更大值可以显示警告和其他信息。
-V 显示版本号并退出。
-w 以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。
-x <table>-attributes
设置<table>属性的字符串。 此属性被填入<table 这里 >.
-X proxy[:port]
对请求使用代理服务器。
-y <tr>-attributes
设置<tr>属性的字符串.
-z <td>-attributes
设置<td>属性的字符串.
对json.im进行,1000次请求,并发用户10的压力测试
ab -n 1000 -c 10 https://json.im
- -n 1000表示请求总数为1000
- -c 10表示并发用户数为10
[h2]3. 登录问题[/h2]
对于实际场景中经常需要用的登录问题,如果接口需要验证Cookie ,那么使用-C写到Cookie内容
$ ab -n 100 -C key=value https://json.im
# 或者使用 -H 带 Cookie 自定义多个字段
$ ab -n 100 -H "Cookie: Key1=Value1; Key2=Value2" http://localhost
# 测试接口Header传入token
$ ab -n 1000 -c 10 -H 'token:abc' https://json.im
[h1]常用命令[/h1]
[h2]1. ls命令[/h2]
ls命令查看当前目录中的文件信息,格式:ls [选项] [文件]
ls -a 查看所有文件列表(可查看隐藏文件)
ls -l 以列表方式显示文件的详细信息
ls -h 配合-l以人性化的方式显示文件大小
ls -l -h 显示文件大小更加直观
ls -lh
ls -hl
ls -lha
ls通配符的使用
- * 代表任意数个字符
- ? 代表任意一个字符,至少1个
- [] 表示可以匹配字符组中的任一一个
- [abc] 匹配a、b、c中的任意一个
- [a-f] 匹配从a到f范围内的任意一个
ls 1*
ls *1.txt
ls *3*
ls 1?1.txt
ls [123]23.txt
ls [1-3]23.txt
[h2]2. cd命令[/h2]
cd命令用于切换工作路径,格式:cd [目录名]
linux下文件和目录特点:
- . 代表当前目录
- .. 代表上一级目录
cd 切换目录
cd ~ 切换到当前用户的主目录(家目录~)
cd . 保持在当前目录不变
cd .. 切换到上级目录
cd - 可以在最近两次工作目录之间来回切换
[h2]3. touch 命令[/h2]
touch命令用于创建空白文件或设置文件的时间,格式: touch [选项 ] [文件]。
参数:
- -a 仅修改“读取时间”(atime)
- -m 仅修改“修改时间”(mtime)
- -d 同时修改 atime和mtime
touch 文件名 如果文件不存在,可以创建一个空白文件;如果文件已存在,可以修改文件的末次修改日期
[h2]4. mkdir命令[/h2]
mkdir命令用于创建空白的目录,格式:mkdir [选项] 目录。
参数:
- -p 可以递归递归创建出具有嵌套叠层关系的文件目录
- mkdir 文件夹名 创建一个新的目录
- mkdir -p a/b/c/d 递归创建多个目录
[h2]5. pwd命令[/h2]
pwd命令用于查看当前所在文件夹目录
[h2]6. clear 命令[/h2]
clear命令用于清屏
[h2]7. rm命令[/h2]
rm命令用于删除文件或目录,格式:rm [选项 ] 文件。
rm 删除文件或目录
rm -f 强制删除,忽略不存在的文件,无需提示
rm -r 递归地删除目录下的内容,删除文件夹时必须加此参数
rm *1.txt 删除以1.txt结尾的所有文件
rm -r *
rm -rf * 强制删除该文件夹中所有文件 (删除完成不可恢复)
[h2]8. cp命令[/h2]
cp命令用于复制文件或目录,格式:cp [选项 ] 源文件 目标文件。
cp -f -r * /home/wwwroot/default
- 如果目标文件是目录,则会把源文件复制到该目录中;
- 如果目标文件也是普通文件,则会询问是否要覆盖它;
- 如果目标文件不存在,则执行正常的复制操作。
cp 源文件 目标文件 复制文件或目录
cp -i 源文件名 目录名 覆盖文件前提示
cp -r 源文件名 目录名 若给出的源文件是目录文件,则cp将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名
cp -d 源文件 目标文件 若对象为“链接文件”,则保留该“链接文件”的属性
cp -p 源文件 目标文件 保留原始文件的属性
cp -a 源文件 目标文件 相当于-pdr
[h2]9. mv命令[/h2]
mv命令用于移动文件或将文件重命名,格式: mv [选项 ] 源文件 [目标路径 |目标文件名 ]。
mv 源文件 目标文件 移动文件或目录 / 重命名文件或目录
mv 文件名 目标文件目录
mv -i 文件名 目标文件目录 覆盖文件前提示
-b 若需覆盖文件,则覆盖前先行备份。
-f 若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文 件或目录。
-i 覆盖前先行询问用户。
-u 在移动或更改文件名时,若目标文件已存在,且其文件日期比源文件新,则不覆盖目标文件。
-v 执行时显示详细的信息。
[h2]10. tree命令[/h2]
tree [目录名] 以树状图列出文件目录结构,tree -d 只显示目录信息
[h2]11. cat命令[/h2]
cat命令用于查看内容较少的纯文本文件,格式:cat [选项] [文件]。
cat 文件名 查看文件内容、创建文件、文件合并、追加文件内容等功能,会一次性显示所有的内容,适合查看内容较少的文本文件
cat -b 文件名 对非空文件内容,显示行编号
cat -n 文件名 对输出的所有内容,显示行编号
[h2] 12. more命令[/h2]
more命令用于查看内容较多的纯文本文件,格式:more [选项] 文件。
more 文件名 分屏显示文件内容,每次只显示一页内容,适合内容较多的文本文件
使用more的操作键:
- 空格键:显示手册页的下一屏
- Enter键:一次滚动手册页的一行b:回滚一屏
- f:前滚一屏
- q:退出
[h2]13. less命令[/h2]
less命令用于查看文件的内容,less与more类似,但使用less可以随意浏览文件,而more 仅能向前移动,却不能向后移动,而且less在查看之前不会加载整个文件,格式:less [选项] 文件。
使用less的操作键:more命令的所有按键less都支持
- 空格键:显示手册页的下一屏
- Enter键:一次滚动手册页的一行
- b:回滚一屏
- f:前滚一屏
- q:退出
- ↑↓箭头可以实现一行一行的上下翻
- PageDown/PageUp可以实现一页一页的上下翻
[h2]14. grep命令[/h2]
grep命令用于在文本中执行关键词搜索,并显示匹配的结果,格式: grep [选项] [文件]。
参数:
- -n 显示匹配行及行号
- -v 显示不包含匹配文本的所有行(相当于求反)
- -i 忽略大小写
- -c 仅显示找到的行数
- -b 将可执行文件(binary)当作文本文件(text)来搜索
两种模式查找:
- ^a 行首,搜索以a开头的行
- ke$ 行尾,搜索以ke结束的行
- grep 搜索文本 文件名 搜索文本文件内容
grep as 123.txt 搜索as
grep -n as 123.txt 搜索as显示行号
grep -v as 123.txt
grep -vn as 123.txt
grep -i as 123.txt 搜索as忽略大小写
grep -in as 123.txt 搜索as忽略大小写显示行号
grep ^f 123.txt 搜索以f为行首的内容
grep a$ 123.txt 搜索以a为行尾的内容
grep -n a$ 123.txt 搜索以a为行尾的内容,并显示行号
[h2]15. find命令[/h2]
find命令用于按照指定条件来查找文件,格式: find [查找路径] 寻找条件 操作。
在 Linux系统中,搜索工作一般都是通过 find命令来完成的,它可以使用不同的文件特性作为寻找条件(如文件名、大小、修改时间、权限等信息),一旦匹配成功则默认将信息显示到屏幕上。
-name 匹配名称
-perm 匹配权限(mode为完全匹配,-mode为包含即可)
-user 匹配所有者
-group 匹配所有组
-mtime -n +n 匹配修改内容的时间(-n指n天以内,+n指n天以前)
-atime -n +n 匹配访问文件的时间(-n指n天以内,+n指n天以前)
-ctime -n +n 匹配修改文件权限的时间(-n指n天以内,+n指n天以前)
-nouser 匹配无所有者的文件
-nogroup 匹配无所有组的文件
-newer f1 !f2 匹配比文件f1新但比f2旧的文件
--type b/d/c/p/l/f 匹配文件类型(后面的字母参数依次表示块设备、目录、字符设备、管道、链接文件、文本文件)
-size 匹配文件的大小(+50KB为查找超过50KB的文件,而-50KB为查找小于50KB的文件)
-prune 忽略某个目录
-exec ...... { }; 后面可跟用于进一步处理搜索结果的命令(下文会有演示)
-exec参数用于把find命令搜索到的结果交由紧随其后的命令作进一步处理,它十分类似于管道符技术,并且由于 find命令对参数的特殊要求,因此虽然 exec是长格式形式,但依然只需要一个减号(-)。
find [路径] -name "*.py" 查找指定路径下扩展名是.py的文件,包括子目录
如果省略路径,表示在当前文件夹下查找
例如:
find Desktop/ -name "*1*" 搜索桌面目录下,文件名包含1的文件
find Desktop/ -name "*.txt" 搜索桌面目录下,所有以.txt为扩展名的文件
find Desktop/ -name "1*" 搜索桌面目录下,以数字1开头的文件
find / -perm -4000 -print 查询整个系统中搜索权限包括SUID权限的所有文件s输出
输出120天之前创建的所有文件:find ./ -type f -mtime +120 -print
删除120天之前创建的所有文件:find ./ -type f -mtime +120 -delete
[h2]16. tail 命令[/h2]
tail命令用于查看纯文本文档的后 N行或持续刷新内容,格式: tail [选项] [文件]。
- tail -n 20 文件名 查看文本内容的最后20行
- tail -f 文件名 实时查看文件最新信息
[h2]17. head 命令[/h2]
head命令用于查看纯文本文档的前 N行,格式: head [选项] [文件]。
- head -n 20 文件名 查看文件的前20行内容
[h2]18. tr命令[/h2]
tr命令用于替换文本文件中的字符,格式: tr [原始字符] [目标字符]。
想要快速地替换文本中的一些内容,可以先使用cat命令读取待处理的文本,然后通过管道符把这些文本内容传递给 tr命令进行替换操作即可。
例如,把file.txt文件中的英文全部替换为大写,但是不改变file.txt文件内容
[h2]19. wc命令[/h2]
wc命令用于统计指定文本的行数、字数、字节数,格式:wc [参数] 文本。
参数:
- -l 只显示行数
- -w 只显示单词数
- -c 只显示字节数
[h2]20. stat命令[/h2]
stat命令用于查看文件的具体存储信息和时间等信息,格式:stat 文件名称。
stat命令可以用于查看文件的存储信息和时间等信息,命令 stat anaconda-ks.cfg会显示出
文件的三种时间状态(已加粗): Access、 Modify、 Change。
[h2]21. diff命令[/h2]
diff命令用于比较两个文本文件的差异,格式:diff [参数] 文件1 文件2。
diff –brief 比较两个文件是否相同
diff -c 详细比较两个文件的差异之处
[h2]22. dd命令[/h2]
dd命令用于按照指定大小和个数的数据块来复制文件或转换文件,格式:dd [参数 ]。
参数:
- if 输入的文件名称
- of 输出的文件名称
- bs 设置每个“块”的大小
- count 设置要复制的“块”的个数
[h2]23. file命令[/h2]
file命令用于查看文件的类型,格式: file 文件名。
[h2]24. vi(Visual interface)命令[/h2]
vi 文件名 如果文件已存在,会直接打开该文件;如果文件不存在,会新建一个文件
末行模式命令:
- w 保存
- q 退出
- q! 强行退出,不保存退出
- wq 保存并退出
- x 保存并退出
[h2]25. echo命令[/h2]
echo命令用于在终端输出字符串或变量提取后的值,格式: echo [字符串| $变量]。
例如: echo hello java 输出hello java
echo $JAVA_HOME 输出java的环境变量JAVA_HOME的路径
[h2]26. date命令[/h2]
参数:
- %t 跳格[Tab键]
- %H 小时(00~23)
- %I 小时(00~12)
- %M 分钟(00~59)
- %S 秒(00~59)
- %j 今年中的第几天
- %d 日
- %m 月
- %Y 年
格式化日期:date “+%Y-%m-%d %H:%M:%S”,date “+%j” 查询今天是今年的第几天
[h2]27. cal命令[/h2]
cal 查看日历,格式:cal [选项]。
- cal 查看当前月的日历
- cal -y 查看一年的日历
[h2]28. tar命令[/h2]
tar命令用于对文件进行打包压缩或解压,格式:tar [选项 ] [文件]。
tar -zxvf wp.gz -C /home/wwwroot/default
在Linux系统中,常见的文件格式比较多,其中主要使用的是 .tar或 .tar.gz或 .tar.bz2格式。
参数:
- -c 用于创建压缩文件
- -x 用于解压文件
- -t 查看压缩包内有哪些文件
- -z 用Gzip压缩或解压
- -j 用bzip压缩或解压
- -v 显示压缩或解压的过程
- -f 目标文件名,f后面一定是.tar文件,所以必须放选项最后
- -p 保留原始的权限与属性
- -P 使用绝对路径来压缩
- -C 指定解压到的目录
- -c和-x 参数不能同时使用
- 用户使用时则是根据文件的后缀来决定应使用何种格式参数进行解压。
- tar -cvf 打包文件.tar 被打包的文件/路径(多个文件空格分开) 打包文件
- tar -xvf 打包文件.tar 解包文件
- gzip压缩
- tar -zcvf 打包文件.tar.gz 被压缩的文件/路径… 压缩文件
- tar -zxvf 打包文件.tar.gz 解压缩文件
- tar -zxvf 打包文件.tar.gz -C 目标路径 解压缩到指定路径
- bzip2压缩
- tar -jcvf 打包文件.tar.gz 被压缩的文件/路径… 压缩文件
- tar -jxvf 打包文件.tar.gz 解压缩文件
- tar -jxvf 打包文件.tar.gz -C 目标路径 解压缩到指定路
[h2]29. ln 文件链接[/h2]
ln命令 用来为文件创建链接,链接类型分为硬链接和符号链接两种,默认的链接类型是硬链接。如果要创建符号链接必须使用”-s”选项。
注意:符号链接文件不是一个独立的文件,它的许多属性依赖于源文件,所以给符号链接文件设置存取权限是没有意义的。
ln [参数][源文件或目录][目标文件或目录]
# 硬链接
ln /usr/local/python3/bin/python3.exe /usr/bin/python3.exe
#软连接
ln -s /usr/local/redis/bin/* /usr/local/bin '//将redis命令创建软连接,便于系统识别'
[h3]29.1 软链接[/h3]
- 软链接,以路径的形式存在。类似于Windows操作系统中的快捷方式
- 软链接可以 跨文件系统 ,硬链接不可以
- 软链接可以对一个不存在的文件名进行链接
- 软链接可以对目录进行链接
[h3]29.2 硬链接[/h3]
建立硬链接时,在另外的目录或本目录中增加目标文件的一个目录项,这样,一个文件就登记在多个目录中。如下所示的m2.c文件就在目录mub1和liu中都建立了目录项。
- 硬链接,以文件副本的形式存在。但不占用实际空间。
- 不允许给目录创建硬链接
- 硬链接只有在同一个文件系统中才能创建
[h2]30. du[/h2]
du命令用于查看目录占用的磁盘空间大小
du -h --max-depth=1
[h2]31. source命令[/h2]
source用于在当前Shell环境中从指定文件读取和执行命令,在一些工具的执行过程中,会把环境变量设置以”export XXX=XXXXXX”或”declare XXX=XXXXXX”的形式导出到 一个文件中,然后用source加载该文件内容到执行环境中,读取和执行/root/.bash_profile文件。
source ~/.bash_profile
[h2]32. pkill[/h2]
pkill 是一款 Linux/Unix 操作系统中用于杀死进程的命令行工具,可以使用进程名、用户 ID、进程组 ID 等过滤条件来查找并杀死匹配的进程。它是 killall 命令的一个改进版本,可以更加精细地控制需要杀死的进程,同时也更加安全。
- -u:指定需要匹配的用户 ID。
- -g:指定需要匹配的进程组 ID。
- -f:使用进程的完整命令行参数来匹配进程名。例如,使用 -f “java -jar” 将匹配所有命名为 java -jar 的进程。
- -n:指定需要杀死的进程数量,通常与 -f 选项一起使用。
- -s:指定用于发送信号的信号编号,默认为 SIGTERM。
- -V:显示 pkill 命令的版本信息。
# 如果要杀死所有属于 web 用户的 nginx 进程,可以使用以下命令:
$ pkill -u web nginx
# 如果要杀死以 nginx 为关键词的所有进程,可以使用 -f 选项,例如:
$ pkill -f nginx
[h2]33. pmap[/h2]
pmap 命令用于显示一个进程或者指定程序的内存映射情况,即查看进程或程序中哪些数据和代码被映射到了物理内存或虚拟内存的哪个地址上,以及每个地址的权限等信息。
$ pmap -x 1234
[h2]34. passwd[/h2]
如果需要设置一个空密码,可以执行 passwd -d 命令。
# passwd
Changing password for user root.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
[h2]35. rsync[/h2]
rsync 是 Linux 下基于网络传输实现同步的工具,可以实现快速、安全的文件同步。
$ rsync -avzh /source/dir/ /target/dir/
- -a: 表示使用归档模式同步,其中包括递归复制、保留权限和其他元数据以及压缩等功能。
- -v: 表示启用详细输出模式,即在同步过程中显示更多信息。
- -z: 表示在传输过程中对数据进行压缩以减少网络流量。
- -h: 表示以人类可读形式显示输出信息。
最后是源目录和目标目录。这里使用了一个斜杠来确保 rsync 操作带有完整路径。如果您不采用这种方式,则会在目标文件夹中创建 /target/dir/source/dir/ 结构。
[h2]36. dmesg[/h2]
dmesg 是一个 Linux 系统命令,用于打印内核环缓冲区(Kernel Ring Buffer)中的消息。这个环形缓冲区是一种特殊的文件,它记录了内核启动以来发生的事件,例如硬件故障、系统错误、设备驱动程序加载和卸载等。通过查看 dmesg 输出内容,您可以快速定位和解决系统问题,并进行系统性能优化。
- dmesg,显示全部信息
- dmesg -n 20,仅显示最近20条信息:
[h1]常见问题[/h1]
[h2]1.bash不显示路径[/h2]
vim ~/.bash_profile
#添加如下文本
export PS1='[u@h W]$'
source ~/.bash_profile
[h2]2.清理乱码文件[/h2]
# 使用 ls -i 查看这个文件的ID号;
# find -inum 删除文件ID号 -delete
[h2]3.yum: command not found[/h2]
Yum(全称为 Yellow dogUpdater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
RPM Package Manager (RPM) 是一个强大的命令行驱动的软件包管理工具,用来安装、卸载、校验、查询和更新 Linux 系统上的软件包。
apt-get update作用是从服务器拉取可用的包到本地
[h2]4.yum源[/h2]
安装阿里的 yum 源,可以按照以下步骤操作:
备份当前的 yum 源配置文件:
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
下载阿里的 yum 源配置文件:
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
注意,如果你使用的是 CentOS 7,你需要下载对应版本的 yum 源配置文件。你可以在阿里云镜像站的 CentOS 镜像页面中找到对应的 yum 源配置文件链接。
清除 yum 缓存:
sudo yum clean all
更新 yum 缓存:
sudo yum makecache
yum install -y https://mirrors.cloud.tencent.com/epel/epel-release-latest-8.noarch.rpm
[h2]4.实用命令[/h2]
- 查看指定程序启动的命令:ps -eo pid,lstart,cmd | grep nginx
- 查看php-fpm正在执行的PHP文件:ps aux | grep php-fpm、sudo lsof -p <PID> | grep php
暂无评论内容