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执行:1chomod -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 NAMEsshd 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重命名为file2mv file1 file2 dir 把文件file1、file2移动到目录dir中4. findfind / -name file1 从根目录开始搜索文件和目录find / -user user1 搜索属于用户user1的文件和目录了find /home/user1 -name \*.bin 在目录/home/user1中搜索带有.bin结尾的文件5. cpcp -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. chmodchmod +x 文件 授予文件的执行权限chown -R x:x 目录 递归的把目录的所有者和所属组赋予x和xchown -h x:x 目录 修改自身的所有者和所属组而不是软连接的所有者和所属组7. tartar -zxvf 文件 -C 解压路径tar -zcvf 压缩后的文件名 需要压缩的目录
8. jps场景:查询存活的进程ID以及进程别名进程ID(PID) 对外显示进程名称(启动java进程的类名--以java命令直接启动 |或jar文件名 --用java -jar命令启动的jar文件)5461 DorisFEjps -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 1248328UID:程序被该UID所拥有的PID:程序pidPPID:上级父程序的IDC: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. yumyum install 包名
12. whereiswhereis python 查看python的位置
13.diffdiff两个文件如果都相同就没有出现的行,如果不同会列出[ssjs@server1 test]$ vi 1[ssjs@server1 test]$ vi 2[ssjs@server1 test]$ diff 1 214.拷贝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行尾:endinser状态需要按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 LOCALINFILE '文件路径/文件名.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