1.ls
python
"""1.ls"""
ls -l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出 ls -l等同于 ll
第一列共10位,第1位表示文档类型,d表示目录,-表示普通文件,l表示链接文件。后9位,依次对应三种身份所拥有的权限,身份顺序为:owner、group、others,权限顺序为:readable、writable、excutable。如:-r-xr-x---的含义为当前文档是一个文件,拥有者可读、可执行,同一个群组下的用户,可读、可执行,其他人没有任何权限。
第二列表示链接数,表示有多少个文件链接到inode号码。
第三列表示拥有者
第四列表示所属群组
第五列表示文档容量大小,单位字节
第六列表示文档最后修改时间,注意不是文档的创建时间
第七列表示文档名称。以点(.)开头的是隐藏文档
linux查看命令中-h参数,通常是指Human readable也就是说把文件的大小转成我们熟悉的大小单位如
K、M、G
如
ll -h
- rws
setuid:该位是让普通用户可以以root用户的角色运行只有root帐号才能运行的程序或命令
那么原来的执行标志x到哪里去了呢? 系统是这样规定的, 如果本来在该位上有x, 则这些特殊标志显示为小写字母 (s, s, t). 否则, 显示为大写字母 (S, S, T)
2.who am i
python
"""2.who am i """
显示当前登录时用的用户名 如root
3.top
python
"""3.top """
top 查看服务器总体的系统运行状态和cpu的使用率
直接输入大写的M 按照 %MEM降序排列
直接输入大写的P 按照 %CPU降序排列
Z 黑白彩色
q 退出
top -c: 显示完整的命令
4.cat
python
"""4.cat """
cat(英文全拼:concatenate)
cat filename 查看某个文件内容
cat /dev/null > file_name 清空某个文件
5.grep
python
"""5.grep Global Regular Expression Print(全局正则表达式打印) """
用于对文件内容进行搜索匹配 一般和cat一起使用 如 cat XXX.txt | grep -n 123
-E :开启扩展(Extend)的正则表达式。
-i :忽略大小写(ignore case)。
-v :反过来(invert),只打印没有匹配的,而匹配的反而不打印。
-n :显示行号
-w :被匹配的文本只能是单词,而不能是单词中的某一部分,如文本中有liker,而我搜寻的只是like,就可以使用-w选项来避免匹配liker
-c :显示总共有多少行被匹配到了,而不是显示被匹配到的内容,注意如果同时使用-cv选项是显示有多少行没有被匹配到。
-o :只显示被模式匹配到的字符串。
--color :将匹配到的内容以颜色高亮显示。
-A n:显示匹配到的字符串所在的行及其后n行,after
-B n:显示匹配到的字符串所在的行及其前n行,before
-C n:显示匹配到的字符串所在的行及其前后各n行,context
查找mysql.log文件中含有emission的行
使用联合筛选 如要名称和日期 and
的关系,这是指同一条日志同时要满足的条件
cat mysql.log | grep "市经道路与铁路交叉二期工程" | grep "building"
查询mysql日志中含有 "car_inout_data" 或 "building"的数据or
关系,这是指某条日志只要查看其中一个就可以
tail -f mysql.log | grep "car_inout_data|building"
目前使用来看这个命令不是那么稳定,需要转义一下
tail -f mysql.log | grep "car_inout_data\|building"
追踪实时的数据
tail mysql.log -f | grep -C 1 "市经道路与铁路交叉二期工程"
实时追踪不含有 car 和and关系
point的,这是指某条日志不包含其中一个都不显示
tail -f mysql.log | grep -v "car" | grep -v "point"
-
2022年3月24日更新 实时追踪不含有 car 或者 point的行,这是指某条日志不包含其中一个都不显示。同
tail -f mysql.log | grep -v "car" | grep -v "point"
一样的效果tail -f mysql.log | egrep -v "car|point"
查看日志末尾10行
tail -n 10 filename
循环实时查看最后10行
tail -fn 10 filename
查询日志前10行
head -n 10 filename
2022年4月1日更新 更新服务器时间
硬件时间:计算机自己有自己的时间,也就是硬件时间,hard clock,也就是存在 BIOS 里那个时间
服务器时间:计算机启动时,就要读取硬件时间
6.date 查看当前服务器时间
python
"""6.date """
date -s "20220401 23:59:59" 设置服务器时间
hwclock --show 显示硬件时间
hwclock --hctosys 将硬件时间写入系统时间
date
date -s "20220401 23:59:59"
hwclock --show
hwclock --hctosys
7.df -h
sql
7 . 查看当前主机磁盘存储空间 df:disk free
df -h
- H与h的区别 大写 -H:在某些命令中,如 df -H、du -H,大写的 -H 表示以"基于十进制的单位"显示结果。这意味着磁盘空间大小 以 1000 的倍数进行计算和显示。例如,1 GB 表示 1000 MB,而不是 1024 MB。
小写 -h:在许多命令中,如 df -h、du -h,小写的 -h 表示以"人类可读的单位"显示结果。这意味着磁盘空间大小以更易读的方式进行显示,使用 K(千字节)、M(兆字节)、G(吉字节)等单位。例如,1 GB 表示 1 吉字节。 - 如下图所示
df -h /xxx
可以查看此文件在哪块硬盘(存储位置)上
上图中 /dev/vad1
已经满了导致系统不可用,但是不知道要删除哪个文件夹下的文件
此时可以df -h /xxx
来查看文件在哪块硬盘上,就可以通过删除下面的文件来腾出空间
8.查看服务器版本
hostnamectl status
9.代码自动补全
yum -y install bash-completion
输入host按tab就会出现之相关的命令
10 rm
rm 加文件名 删除文件需要确认
rm -f 强制删除文件 不需要确认 f:force
- 删除某个文件夹下所有文件
cd 该文件夹下
bash
rm -f *
2022-07-01更新
11 nohup
nohup python3 gps_minitor.py & 注释:使用python3 后台运行 py程序
12 jobs
jobs 是Linux命令 jobs 命令显示了当前 shell 环境中已启动的作业状态
jobs -l 多显示一列ID号
current 一个"+"(加标志)标识了将被 fg 或 bg 命令作为缺省值使用的作业。这个作业标识也能够使用 %+ (百分号、加号)或 %% (双百分号)来指定。
如果当前缺省作业退出,就用一个"-"(减号标志)来标识将要成为缺省作业的作业。这个作业标识也可以用 %-(百分号、减号)来指定。
state 显示以下值之一:
Running
表示此作业没有被信号挂起并没有退出。
Done
表示此作业已经完成并返回退出状态 0。
Done (code)
表示此作业已经正常完成和退出并返回指定的非零退出状态码。这个代码用一个十进制数来表示。
Stopped
表示此作业已经挂起。
killed
表示此作业正在被杀死
13 find
Linux find 命令用来在指定目录下查找文件。
find / -name 'java' 查找根目录下 名称叫做java的文件
2022-07-05更新
14 lsof
losf: list of file 列出当前系统打开文件
加端口号,查看端口被谁占用
如lsof -i:8888 查看8888端口是否被占用
kill -9 8888即可释放改端口
15 cron
cron:CRON的全称:Command Run On (UNIX scheduler) 可以理解为在linux/unix上运行程序
具体用法如下 不要被某些文章误导了 要看就要看服务器给出的文章
比如 下图表达式根本解释不出来 浪费了笔者 1 2个小时
crontab -l 查看正在运行中的定时任务
corntab -e 编辑某个用户的任务 只用这个编辑吧 避免报错和不必要的麻烦
注意:cron -e 应全部写绝对路径 并以/开头 比如 /usr/local/python3.9/bin/python3 否则会报错
不建议直接使用python3 建议 使用 which python3 得到执行目录 把这个路径拷贝下来
corntab -e 按 i 进入编辑模式 esc键退出编辑 ctrl + : 输入wq 保存并退出
若出现下图加横线的语句便是安装成功
centos 7.x
/sbin/service crond status //查看状态
/sbin/service crond start //启动
/sbin/service crond stop //停止
/sbin/service crond restart //重启
sbin/service crond reload //重载
cron 的log 在var/log/cron里 可以查看是否执行 计划任务
备注 上图的根目录没有写 /python_project/导致失败 修改之后执行成功
记录一个完整的流程
corntab -e
输入
*/1 * * * * cd /python_project/script/tfbluemq/ && /usr/local/python3.9/bin/python3 testc.py
出现
重启corn使其立即生效
/sbin/service crond restart
查看是否生效
tail -f var/log/cron
crontab -e
实际修改的是/var/spool/cron下的root 文件
2022-07-12
16 curl
curl(CommandLine Uniform Resource Locator) 用于访问 上传和下载 网络上的资源
访问百度
-
获取本机公网IP(实际上是访问了一个网址,返回ip地址)
curl ifcojnfig.me
-
下载文件到当前路径下
curl -O url
2022-09-05
17 mv
-
mv :MV 的全称是 Move(移动) 目前用来修改文件名把老的文件名(old)换成新的文件名(new)
mv old new
2022-09-10
18 find
-
查询指定目录下查找文件
find / -name python # / 代表根目录 -name python 文件名称符合 name 为 pyhton 的文件 pyhton
19 ctrl + z 与 ctrl + c
-
Ctrl+C和Ctrl+Z都是中断命令,但作用不同。
Ctrl+C是发送SIGINT信号,终止一个进程。 Ctrl+Z是发送SIGSTOP信号,挂起一个进程,将作业放置到后台(暂停状态)。与此同时,可以通过fg重启前台被中断的任务,也可以通过bg 把中断的任务放到后台执行。
20 fg bg
-
fg 将命令进程号码为N的命令进程放到前台执行,同%N
fg % [jobnumber]
-
bg 将命令进程号码为N的命令进程放到后台执行,同%N
bg % [jobnumber]
jobnumber可以通过jobs -l获得
21 ps
-
ps :Process Status(进程状态) 查看进程信息
-e: 显示所有/每个(evevy)进程。这个选项让 ps 显示系统中的所有进程,而不仅仅是当前用户的进程。
-f: 全格式输出(full-format)。这个选项使 ps 输出更加详细的信息,包括 UID(用户ID)、PID(进程ID)、PPID(父进程ID)、C(CPU使用率)、STIME(启动时间)、TTY(终端)、TIME(占用的CPU时间)和 CMD(命令名称或路径)。
ps -ef | grep nginx # 显示完成的格式输出并含有nginx的进程
-
找出并杀死含有xxx的进程
ps -ef | grep xxx| grep -v grep | cut -c 9-15 | xargs kill -s 9
说明:
"grep firefox"的输出结果是,所有含有关键字"firefox"的进程。
"grep -v grep"是在列出的进程中去除含有关键字"grep"的进程。
"cut -c 9-15"是截取输入行的第9个字符到第15个字符,而这正好是进程号PID。
"xargs kill -s 9"中的xargs命令是用来把前面命令的输出结果(PID)作为"kill -s 9"命令的参数,并执行该命令。"kill -s 9"会强行杀掉指定进程。
22 yum install -y bash-completion
- 用于敲击tab键时补全命令
23 firewalld
- 开启防火墙
bash
systemctl start firewalld
- 开启某个端口
bash
firewall-cmd --zone=public --add-port=8041/tcp --permanent
- 重载已添加的端口
bash
firewall-cmd --reload
- 查看开放的端口
bash
firewall-cmd --zone=public --list-ports
24 解决中文乱码
- 下载中文包
bash
sudo yum install langpacks-zh_CN
- 查看已安装的语言包列表
bash
locale -a
- 设置系统默认语言,请使用以下命令:
bash
localectl set-locale LANG=zh_CN.UTF-8
25 firewall
- 启动防火墙
bash
systemctl start firewalld
- 开放防火墙端口 port=xxxx
bash
firewall-cmd --zone=public --add-port=8041/tcp --permanent
- 重载已添加的端口
bash
firewall-cmd --reload
- 查看开放的端口
bash
firewall-cmd --zone=public --list-ports
- 删除防火墙
sql
firewall-cmd --zone=public --remove-port=80/tcp --permanent
26 tar
-
压缩 czf 解压缩 xzf
-
tar:Tape Archive(磁带归档)是一个用于打包文件和目录的命令,它将多个文件和目录组合成一个单独的归档文件。tar
命令本身并不执行压缩操作,而只是将文件和目录打包到一个文件中,通常使用 .tar 扩展名。
想要使用
tar
命令打包则需要使用tar -czvf archive.tar.gz file.txt
-
将 file.txt 打包并使用 gzip 进行压缩成archive.tar.gz;参数说明 -czvf
- c 表示创建归档文件
- z:使用 gzip 压缩算法进行压缩。文件名为tar.gz
- v 表示显示详细的操作过程
- f 后面跟着 archive.tar.gz,指定归档文件的名称
说明如下:
gzip 是用于进行文件压缩的命令,它使用 gzip 压缩算法对单个文件进行压缩,并将其扩展名更改为 .gz。gzip 压缩通常与 tar
命令结合使用,以在打包文件时进行压缩,从而生成 .tar.gz 或 .tgz 格式的压缩文件。
因此,如果你只想打包文件和目录,但不进行压缩,可以使用 tar 命令。示例如下:
压缩文件:tar -cvf archive.tar file.txt (将 file.txt 打包成 archive.tar)
压缩目录:tar -cvf archive.tar directory/ (将 directory 目录打包成 archive.tar)
如果你希望在打包文件时进行压缩,可以使用 tar 命令结合 gzip 进行压缩。示例如下:
压缩文件:tar -czvf archive.tar.gz file.txt (将 file.txt 打包并使用 gzip 进行压缩成
archive.tar.gz) 压缩目录:tar -czvf archive.tar.gz directory/ (将 directory
目录打包并使用 gzip 进行压缩成 archive.tar.gz) 综上所述,如果你只需要打包文件和目录,选择 tar
命令;如果你需要在打包时进行压缩,可以选择 tar 结合 gzip 进行压缩
-
解压缩
tar -xzvf archive.tar.gz
tar:是一个用于打包和解包文件的命令。
- x:表示解压缩(或提取)归档文件的内容。
- z:表示解压缩时使用 gzip 压缩算法。
- v:显示详细的操作过程,将输出被处理的文件列表。
- f archive.tar.gz:指定要处理的归档文件的名称为 archive.tar.gz。
执行该命令后,tar 将会解压缩 archive.tar.gz 文件,并将其中的文件提取到当前目录中。解压缩后的文件和目录将在屏幕上以详细的方式显示出来。
解压缩到指定目录:
tar -xzvf archive.tar.gz -C /path/to/directory
27 scp
-
scp( Secure Copy 安全拷贝)命令用于在不同的服务器之间安全地复制文件或目录。
scp /path/to/file username@destination:/path/to/destination
下面是 scp 命令的具体解释:
- /path/to/file:指定源服务器上要复制的文件或目录的路径。
- username:目标服务器上的用户名,你需要使用目标服务器的有效用户名进行替换。
- destination:目标服务器的主机名或 IP 地址。
- :/path/to/destination:指定要将文件复制到的目标服务器上的路径。冒号前的部分表示目标服务器上的路径,你可以根据需要进行替换。
28 不同服务器的数据库之前复制表
1若两台服务器可以进行通信
- 注意格式和大小写,
-p
后面的xxx
是数据库密码,-P
后面跟端口号 --skip-lock-tables
是不锁表进行传输 看实际需要进行添加或删除newgps
是库名vehicle_point_2024-10-10
是表名pv
是查看进度 需要yum install -y pv
进行安装 若是不需要查看进入则删除pv |
bash
mysqldump -h 221.237.xxx.xx -P 3336 -u epuser -p'xxxx' --skip-lock-tables newgps vehicle_point_2024-10-10 | pv | mysql -h 106.75.xxx.xxx -u epuser -p'xxxx' newgps
- 不需要查看进度命令 不需要锁表命令
python
mysqldump -h 221.237.xxx.xxx -P 3336 -u epuser -p'xxxx' newgps vehicle_point_2024-10-10 | mysql -h 106.75.138.97 -u epuser -p'xxxx' newgps
2 实测最稳定的方式(执行了1.9G的sql文件,其它方式可能连接会断开)
- 1 在需要同步复制数据的服务器上(我的路径为
/root
)使用下列命令导出sql
bash
nohup mysqldump -h 221.237.xxx.xxx -P 3336 -u epuser -p'xxx' --skip-lock-tables newgps vehicle_point_2024-10-10 > original_table.sql &
2 进入mysql,并选择数据库名
bash
mysql -u xxx -p'xxx'
# 选择数据库名
use xxx;
3 执行sql文件
bash
source /root/original_table.sql
29 whereis和which
which
和whereis
是两个不同的命令,都是用来查找命令的位置如mysql
、python
、nginx
等1
whereis
搜索更全面更广2 在环境变量中的命令,
which
才可以找到
which
命令
which
用于查找系统 PATH 环境变量中指定命令的位置。- 它会按照
$PATH
变量中定义的路径顺序查找是否存在指定命令。 - 如果在
$PATH
中找不到该命令(如nginx
)
which nginx
返回no nginx
,说明nginx
不在系统的$PATH
中。
whereis
命令
whereis
查找命令的位置,包括二进制文件、源代码和手册页的位置。- 它不仅仅依赖于
$PATH
变量,还会在一些系统默认目录中进行查找,因此更全面。 whereis
的结果通常包含了命令的所有相关文件。
whereis nginx
找到了 nginx
安装在 /usr/local/nginx
下,表明 nginx
安装在该路径下,但不在 $PATH
目录中。
总结
nginx
在 /usr/local/nginx
目录下,但这个目录未添加到 $PATH
中,导致 which
命令无法找到它。如果需要通过直接输入 nginx
命令来运行,可以将 /usr/local/nginx
添加到系统的 $PATH
变量中,例如:
bash
export PATH=$PATH:/usr/local/nginx
这样之后可以直接使用 nginx 命令而无需指定完整路径
30 du
du
:Disk Usage,用于显示文件和文件夹的磁盘使用情况。
- 查看此文件夹下总共大小
bash
du -sh xxx
-s
:--summarize,表示只显示指定目录的总大小,而不是显示其每个文件和子目录的大小。-h
:--human-readable,表示以"人类可读"的格式显示大小,自动将结果以 KB、MB、GB 等单位显示出来。- xxx: 文件夹名称
31 unzip
解压.zip
后缀文件,一般用于服务器上打包失败,必须上传本地打包的文件,应压缩为.zip
格式,.rar
在windows上不好解压
此命令若在服务器上没找到,sudo yum install unzip
则需要下载相应的库包
以centos服务器为例
bash
sudo yum install unzip
32 公网ip地址查询
bash
curl ifconfig.me
实际上是访问某个网址,此网址将公网ip返回给服务器
33 上传文件
此程序可以通过直接拖拽文件到xshell界面上传文件到xshell目前所在路径下,非常好用!
bash
sudo yum install lrzsz