Linux相关命令
Linux相关知识
- 1.名词介绍
- 2.Linux 文件基本属性
- 1.Linux文件属主和属组
- 2.更改文件属性
- 1.chgrp:更改文件属组
- 2.chown:更改文件所有者(owner),也可以同时更改文件所属组。
- 3.chmod:更改文件9个属性
- 3. Linux 文件与目录管理
- 1.处理文件常用的命令
- 1. ls(英文全拼:list files): 列出目录及文件名
- 2. cd(英文全拼:change directory):切换目录
- 3. pwd(英文全拼:print work directory):显示目前的目录
- 4. mkdir(英文全拼:make directory):创建一个新的目录
- 5. rmdir(英文全拼:remove directory):删除一个空的目录
- 6. cp(英文全拼:copy file): 复制文件或目录
- 7. rm(英文全拼:remove): 删除文件或目录
- 8. mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称
- 2.Linux 文件内容查看
- 1. cat 由第一行开始显示文件内容
- 2. tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
- 3. nl 显示的时候,顺道输出行号!
- 4. more 一页一页的显示文件内容
- 5. less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
- 6. head 只看头几行
- 7. tail 只看尾巴几行
- 4.Linux 用户和用户组管理
- 1.查看用户所属组
- 2.修改用户所属组
- 3.添加用户到新组:
- 4.更改用户的主要组:
- 5.暂未分类
用来记录在生产当中经常用到的一些命令
1.名词介绍
用户所属组:在创建用户时没有特别指定一个主要组,系统通常会自动创建一个与用户名相同的组作为该用户的主要组。
2.Linux 文件基本属性
1.Linux文件属主和属组
[root@www /]# ls -l
total 64
drwxr-xr-x 2 root root 4096 Feb 15 14:46 cron
drwxr-xr-x 3 mysql mysql 4096 Apr 21 2014 mysql
2.更改文件属性
1.chgrp:更改文件属组
语法:
chgrp [-R] 属组名 文件名
参数选项
- -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上 -R 的参数,那么该目录下的所有文件的属组都会更改。
2.chown:更改文件所有者(owner),也可以同时更改文件所属组。
语法:
chown [–R] 所有者 文件名
chown [-R] 所有者:属组名 文件名
3.chmod:更改文件9个属性
语法:
chmod [-R] xyz 文件或目录
#举例 r读:4 w写:2 x执行:1
chomod -R 770 a
选项与参数:
- xyz : x代表拥有者的权限y代表所属组的权限,z代表其他用户的权限。
- -R : 进行递归(recursive)的持续变更,以及连同次目录下的所有文件都会变更
3. Linux 文件与目录管理
1.处理文件常用的命令
1. ls(英文全拼:list files): 列出目录及文件名
2. cd(英文全拼:change directory):切换目录
3. pwd(英文全拼:print work directory):显示目前的目录
4. mkdir(英文全拼:make directory):创建一个新的目录
5. rmdir(英文全拼:remove directory):删除一个空的目录
6. cp(英文全拼:copy file): 复制文件或目录
7. rm(英文全拼:remove): 删除文件或目录
8. mv(英文全拼:move file): 移动文件与目录,或修改文件与目录的名称
2.Linux 文件内容查看
Linux系统中使用以下命令来查看文件的内容:
1. cat 由第一行开始显示文件内容
2. tac 从最后一行开始显示,可以看出 tac 是 cat 的倒着写!
3. nl 显示的时候,顺道输出行号!
4. more 一页一页的显示文件内容
5. less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
6. head 只看头几行
7. tail 只看尾巴几行
4.Linux 用户和用户组管理
1.查看用户所属组
groups username
2.修改用户所属组
groups username
3.添加用户到新组:
使用 usermod 命令可以将用户添加到额外的组中。例如,要将用户 username 添加到 newgroup 组中,可以使用以下命令:
sudo usermod -aG newgroup username
这里的 -aG 选项表示追加用户到指定的附加组而不影响其他组成员关系。
4.更改用户的主要组:
如果需要更改用户的主要组,可以使用 usermod 命令,但不需要 -a 选项。例如,要将用户 username 的主要组更改为 newprimarygroup,可以使用:
sudo usermod -g newprimarygroup username
这里的 -g 选项用于指定新的主要组。
请注意,在执行这些操作时,可能需要管理员权限(即使用 sudo)。完成这些更改后,用户可能需要
重新登录才能使组成员资格的变化生效。
5.暂未分类
1.打开文件系统
1.lsof | wc -l 当前系统中打开的文件总数
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 48766 ssjs mem REG 253,0 309248 134502975 /usr/lib64/security/pam_systemd.so
注释:
COMMAND:进程的名称
PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件.如cwd txt 等
TYPE:打开文件类型 REG文件 DIR目录 CHR字符 BLK块设备 UNIX套接字 FIFO 先进先出队列IPv4网际协议IP套接字
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称
2.lsof -p xx 显示哪些文件被pid为xx的进程打开
3.lsof -i 显示所有打开的端口 -i:80 显示所有打开80端口的进程
4.lsof -n | awk '{print $2}' | sort | uniq -c | sort -nr | head 10输出排名前十的[进程号]以及对应[打开的文件数]
2.重定向操作符
`>`。这会把命令的输出内容保存到指定的文件里,而不是打印在屏幕上。以下是具体的命令格式:
lsof > output_file.txt 这条命令会执行`lsof`,并将其输出的所有内容保存到名为`output_file.txt`的文件中。如果文件已存在,这将会覆盖原有文件内容;如果文件不存在,则会新建该文件。
2.ls
-a查看隐藏文件
ls -srlht 用于列出目录中的文件和子目录并给出文件的大小
split -b 行数 输入文件 输出文件名臣前缀 把文件按照行数切割
3. mv
-f:如果目标文件已经存在,不会询问而直接覆盖
mv file1 file2 把文件file1重命名为file2
mv file1 file2 dir 把文件file1、file2移动到目录dir中
4. find
find / -name file1 从根目录开始搜索文件和目录
find / -user user1 搜索属于用户user1的文件和目录了
find /home/user1 -name \*.bin 在目录/home/user1中搜索带有.bin结尾的文件
5. cp
cp -a /tmp/dir . 复制一个目录到当前工作目录
cp -a dir1 dir2 复制一个目录
cp dir/* . 复制一个目录到当前工作目录
scp -r $pdir/$fname $user@$host:$pdir/$fname 把文件从一个服务器拷贝到另外一个服务器(全部拷贝)
rsync -av $pdir/$fname $user@$host:$pdir/$fname 把文件从一个服务器拷贝到另外一个服务器(增量拷贝)
6. chmod
chmod +x 文件 授予文件的执行权限
chown -R x:x 目录 递归的把目录的所有者和所属组赋予x和x
chown -h x:x 目录 修改自身的所有者和所属组而不是软连接的所有者和所属组
7. tar
tar -zxvf 文件 -C 解压路径
tar -zcvf 压缩后的文件名 需要压缩的目录
8. jps
场景:查询存活的进程ID以及进程别名
进程ID(PID) 对外显示进程名称(启动java进程的类名--以java命令直接启动 |或jar文件名 --用java -jar命令启动的jar文件)
5461 DorisFE
jps -l 显示主类的全限定名
jps -v 显示传递给jvm的参数
9. readlink -f /proc/进程ID/exe
场景:根据进程ID查询进程二进制名称
/home/ssjs/module/apache-doris-2.0.2-bin-x64/java8/bin/java 最后一个为进程ID对应的程序二进制进程名称
10. ss -nltp|grep 进程号 可查询到端口号 *和0.0.0.0同一个意思表示任意地址
场景:用来查询监听端口号,如果有本机地址就选择本机地址后的端口号,没有就都选泽
监听状态 本地地址:端口号 远程地址:端口号 进程名称 进程ID 文件描述符
LISTEN 0 128 *:9060 *:* users:(("doris_be",pid=20414,fd=313))
LISTEN 0 128 *:8040 *:* users:(("doris_be",pid=20414,fd=334))
LISTEN 0 128 *:9050 *:* users:(("doris_be",pid=20414,fd=573))
LISTEN 0 128 *:8060 *:* users:(("doris_be",pid=20414,fd=315))
8. 进程
1.想看一个进程起没起过,在不同用户下执行ps -ef | grep 进程名称 ,关注自己的安装目录
1.netstat -netup | grep 50052
这条命令会列出所有与端口50052相关的网络连接,包括TCP和UDP连接,以及与这些连接关联的进程信息
tcp6 0 0 139.3.6.202:36772(远程机器) 139.3.6.202:3306 (本地机器) ESTABLISHED 20199/java
tcp6 0 0 139.3.6.202:3306 (远程机器) 139.3.6.202:36772(本地机器) ESTABLISHED -
这两个是一个连接,只是因为调度和mysql是在一台机器上,一个是从调度的角度看,一个是从mysql的角度看
2.ps aux | grep 进程号 显示进程的详细信息
a 显示所有用户的所有进程 u 选择有效的用户id或者用户名 x显示没有控制终端的进程,同时显示各个命令的具体路径
ssjs 38190 0. 0 0.0 112808 968 pts/1 S+ 10:54 0:00 grep --color=auto 1196485
说明:
ssjs:运行该进程的用户名
38190:grep命令的pid(这个pid是随机的,每次运行都会不同) 该进程的id号,在当前系统是唯一的
0.0:cpu使用率
0.0:内存使用率
112808:进程占用swap内存大小(kb)
968:进程使用物理内存大小(kb)
pts/1:进程在哪个终端上运行.?表示位置或不需要终端
S+:显示进程当前的状态 D不可中断 R运行 S休眠 T停止 Z僵死 N低优先级 s父进程 +前台进程
10:54:启动该进程的时间
0:00:该进程占用cpu时间
grep --color=auto:启动该进程的命令名称
3.ps -ef | grep 进程号/进程名 -e 显示所有进程 -f 全格式
ssjs 20383 4599 0 11:24 pts/1 00:00:00 grep --color=auto 1248328
UID:程序被该UID所拥有的
PID:程序pid
PPID:上级父程序的ID
C:cpu使用的资源百分比
STIME:系统启动时间
TTY:登入者的终端机位置
TIME:使用掉的CPU时间
CMD:下达的命令
4.ps -ef | wc -l 查看进程总数
9. shell
在shell脚本中可以用/待搜索内容 去搜索对应内容位置
10. 查看文件内容
cat file 从第一个字节开始正向查看文件的内容
tac file 从最后一行开始反向查看一个文件的内容
more file 查看一个长文件的内容
less file 允许在文件中和正向操作一样的反向操作
head -2 查看一个文件的前两行
tail -2 查看一个文件的最后两行
tail -f /var/log/messages 实时查看被添加到一个文件中的内容
11. yum
yum install 包名
12. whereis
whereis python 查看python的位置
13.diff
diff两个文件如果都相同就没有出现的行,如果不同会列出
[ssjs@server1 test]$ vi 1
[ssjs@server1 test]$ vi 2
[ssjs@server1 test]$ diff 1 2
14.拷贝
scp -r $pdir/$fname $user@$host:$pdir/$fname 把文件从一个服务器拷贝到另外一个服务器(全部拷贝)
rsync -av $pdir/$fname $user@$host:$pdir/$fname 把文件从一个服务器拷贝到另外一个服务器(增量拷贝)
16.防火墙设置
sudo systemctl status firewalld 查看防火墙状态
sudo systemctl start firewalld 打开防火墙
sudo systemctl stop firewalld 关闭防火墙
17.时钟同步
sudo systemctl start ntpd 开启ntpd时钟同步
sudo systemctl enable ntpd 设置系统启动时自启ntpd
18.其他
split -b 行数 输入文件 输出文件名臣前缀 把文件按照行数切割
在shell脚本中可以用/待搜索内容 去搜索对应内容位置
定位到头:
定位到尾:
19.shell命令
行首:gg
行尾:end
inser状态需要按esc在操作
20.查看编码集
file -bi example.txt | grep charset
21.
Doris不支持ETX分隔符导入
解决方法:在202上/home/ssjs/shuju/cuishou/1.txt 修改文件名 然后sh 1.txt,将ETX分隔符换位制表符,在源文件替换
22.
查看文件行数
wc -l 文件名
23.Perl脚本
使用场景:
文本处理
数据清洗:Perl 非常适合用于清洗和格式化文本数据,例如去除不必要的字符、调整格式、合并或拆分字段等。
日志分析:Perl 可以用来解析和分析日志文件,提取有用的信息,并生成报告或图表。
字符串操作:Perl 提供了丰富的字符串处理函数和正则表达式支持,使得处理复杂字符串变得相对简单
24.perl -0777 -pe '
s/(?<!\\)"(?:\\.|[^"])*"(*SKIP)(*FAIL)|,/\t/g; # 替换未被双引号包围的逗号为制表符
s/"//g; # 移除所有双引号
' inputfile > outputfile
功能介绍:替换文件中未被双引号包围的逗号为制表符(\t),而保留双引号内的逗号不变,最后移除所有双引号\
使用场景:从gbse上使用导出功能导出excel数据,上传到doris服务器中,使用local data导入数据时做预处理
LOAD DATA LOCAL
INFILE '文件路径/文件名.csv'
INTO TABLE 库名.表名
COLUMNS TERMINATED BY '\t' -- 列分隔符
LINES TERMINATED BY '\n' -- 行分隔符
IGNORE 1LINES; -- 跳过第一行
25. systemctl
是什么:是一组命令,涉及到系统管理的方方面面。
应用场景:
26.rpm -qa | grep mysql
是什么 : 这是 Red Hat Package Manager 的缩写,是一个用于安装、卸载、查询、验证、更新和升级 RPM 软件包的命令行工具。
-qa:这是 rpm 命令的两个选项组合在一起使用的。
-q 或 --query:表示查询已安装的软件包。
-a 或 --all:表示查询所有已安装的软件包。
grep 是一个文本搜索工具,用于搜索包含指定模式的行
这个命令的输出将是一个或多个与 MySQL 相关的已安装软件包的名称
27.zookeeper