Linux命令
2021/7/14 7:07:05
本文主要是介绍Linux命令,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Linux基础命令
文章目录
- Linux基础命令
- ls
- cd
- pwd
- touch
- mkdir
- echo
- rm
- sed
- cat
- head
- tail
- more
- less
- cp
- 通配符
- 压缩与解压缩
- grep
- df -h
- find
- 重定向
- 管道符
- 用户 user
- 组 group
- passwd
- vi编辑器命令
- 进程管理 ps
- 权限管理
- 软件管理
- 服务控制的方式
- 网卡回归传统名
- ifconfig
- ip
- ss
- 硬盘
- 分区
- 格式化
- 挂载
- kernel --->物理终端(/dev/console)---> /var/log/dmesg
- /var/log/messages:系统标准错误日志信息;非内核产生的引导信息;各子系统产生的信息
- /var/log/maillog:邮件系统产生的日志信息
- /var/log/secure:与安全相关的日志信息
- facility可以理解为日志的来源或设备,目前常用的facility有以下几种:
- auth #认证相关的
- authpriv #权限、授权相关的
- cron #任务计划相关的
- daemon #守护进程相关的
- kern #内核相关的
- lpr #打印相关的
- mail #邮件相关的
- mark #标记相关的
- news #新闻相关的
- security #安全相关的,与auth类似
- syslog #syslog自己的
- user #用户相关的
- uucp #unix to unix cp相关的
- local0到local7 #用户自定义使用
- * # *表示所有的facility
- priority(log level)日志的级别,一般有以下几种级别(从低到高),级别越低,信息越详细:
- debug #程序或系统的调试信息
- info #一般信息
- notice #不影响正常功能,需要注意的消息
- warning/warn #可能影响系统功能,需要提醒用户的重要事件
- err/error #错误信息
- crit #紧急,比较严重的
- alert #必须马上处理的
- emerg/panic #会导致系统不可用的
- \* # *表示所有的日志级别
- none #跟*相反,表示啥也没有
- action(动作)日志记录的位置:
- 系统上的绝对路径 #普通文件,如:/var/log/xxx
- | COMMAND #管道,通过管道送给其他的命令处理
- 终端 #终端,如:/dev/console
- @HOST #远程主机(远程主机必须要监听在tcp或udp协议514端口上提供服务),如:@10.0.0.1
- 用户 #系统用户,如:root
- * #登录到系统上的所有用户,一般emerg级别的日志是这样定义的
- 源码安装三部曲
ls
列出: [options] 选项 [arges] 参数
-l 详细列出 [root@localhost ~]# ls -l 总用量 2 -rw-------. 1 root root 1392 7月 6 10:27 anaconda-k -rw-r--r--. 1 root root 1547 7月 6 11:01 initial-s -d 目录文件 [root@localhost ~]# ls -d . -a 显示所有文件 [root@localhost ~]# ls -a . .bash_history .cshrc .. 文档 .bash_logout .dbus ..... -h 显示大小 [root@localhost ~]# ls -ahl 总用量 52K dr-xr-x---. 16 root root 4.0K 7月 6 14:21 . dr-xr-xr-x. 17 root root 224 7月 6 10:19 .. -rw-r--r--. 1 root root 349 7月 6 11:42 '~'
cd
命令用于切换当前工作目录
cd [dirName] dirName:要切换的目标目录 cd ~ 跳到自己的home目录 cd ../.. 跳到目前目录的上上两层 示例: [root@localhost ~]# cd new [root@localhost new]# cd ../.. [root@localhost /]#
pwd
命令用于显示工作目录
[root@localhost ~]# pwd /root //输出结果
touch
(创建文件)
touch test //创建一个名为“test”的新的空白文件
mkdir
(创建目录)
mkdir [-p] dirName -p 确保目录名称存在,不存在的就新建一个 示例: [root@localhost ~]# mkdir -p newfile [root@localhost ~]# ls anaconda-ks.cfg newfile initial-setup-ks.cfg
echo
(输出到屏幕)
示例: [root@localhost ~]# echo hello word hello word
rm
(用于删除一个文件或者目录)
rm [options] name... -i 删除前逐一询问确认。 -r 将目录及以下之档案亦逐一删除 -f 即使原档案属性设为唯读,亦直接删除,无需逐一确认 (强制删除)。 示例:删除文件可以直接使用rm命令,若删除目录需配合"-r" rm test.txt 是否删除一般文件“test.txt”? y rm homework rm: 无法删除目录"homework": 是一个目录 rm -r homework rm:是否删除 目录 "homework"? y 删除当前目录下的所有文件及目录 : rm -r *
sed
(编辑一个或多个文件、简化对文件的反复操作、编写转换程序等)
-n 只显示处理后的结果 -i 替换 示例: sed -n '/test/p(打印)' testfile sed -i 's/改变前/改变后/g' testfile
cat
(命令用于连接文件并打印到标准输出设备上)
-n 或 --number:由 1 开始对所有输出的行数编号
-b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号
-s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行
示例: [root@localhost ~]# cat -n anaconda-ks.cfg //从1编号查看文件内容并打印到标准输出设备 1 #version=RHEL8 2 ignoredisk --only-use=nvme0n1 3 autopart --type=lvm 4 # Partition clearing information 5 clearpart --none --initlabel
head
命令可用于查看文件的开头部分的内容,常用的参数 -n 用于显示行数,默认显示前10
格式:
head [参数] [文件]
参数:
-q 隐藏文件名
-v 显示文件名
-c<数目> 显示的字节数。
-n<行数> 显示的行数
示例: [root@localhost ~]# head anaconda-ks.cfg //默认显示前十行 #version=RHEL8 ignoredisk --only-use=nvme0n1 autopart --type=lvm # Partition clearing information clearpart --none --initlabel # Use graphical install graphical # Use CDROM installation media cdrom # Keyboard layouts
tail
(命令可用于查看文件的内容,默认显示后十行)
格式:
tail [参数] [文件]
参数:
-f 循环读取
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示文件的尾部 n 行内容
–pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
-q, --quiet, --silent 从不输出给出文件名的首部
-s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒
示例: [root@localhost ~]# tail -n 3 anaconda-ks.cfg //显示最后3行 pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty %end
more
(类似 cat 不过会以一页一页的形式显示,更方便)
格式:
more [文件名]
常用命令操作:
Enter 向下n行,需要定义。默认为1行
Ctrl+F 向下滚动一屏
空格键 向下滚动一屏
Ctrl+B 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
V 调用vi编辑器
!命令 调用Shell,并执行命令
q 退出more
示例: [root@localhost ~]# more anaconda-ks.cfg //查看文件内容 #version=RHEL8 ignoredisk --only-use=nvme0n1 # Keyboard layouts keyboard --vckeymap=cn --xlayouts='cn' # System language --更多--(19%) //按空格键显示下一屏
less
(less 与 more 类似,less 可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页)
格式: less [参数] [文件] 参数: -e 当文件显示结束后,自动离开 -f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件 -g 只标志最后搜索的关键词 -i 忽略搜索时的大小写 -m 显示类似more命令的百分比 -N 显示每行的行号 -Q 不使用警告音 -s 显示连续空行为一行 -S 行过长时间将超出部分舍弃 /字符串:向下搜索"字符串"的功能 ?字符串:向上搜索"字符串"的功能 n:重复前一个搜索(与 / 或 ? 有关) N:重复后一个搜索(与 / 或 ? 有关) b 向上翻一页 d 向后翻半页 h 显示帮助界面 Q 退出less 命令 u 向前滚动半页 y 向前滚动一行 空格键 滚动一页 回车键 滚动一行 [pagedown]: 向下翻动一页 [pageup]: 向上翻动一页 示例: less anaconda-ks.cfg //查看文件 history | less //查看历史命令
cp
(复制,主要用于复制文件或目录)
格式:
cp [options] source dest(源目标) 目标文件/目录
参数:
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容
-d:复制时保留链接。这里的链接相当于 Windows 系统中的快捷方式
-f:覆盖已经存在的目标文件而不给出提示。
-i:与 -f 选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖,回答 y 时目标文件将被覆盖。
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中。
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件。
-l:不复制文件,只是生成链接文件。
示例: [root@localhost ~]# cp -r test newfile //将目录test下的所有文件复制到新目录newfile下 [root@localhost ~]# cd newfile/ [root@localhost newfile]# ls test [root@localhost newfile]#
通配符
* 任意字符串 ?任意字符 . 当前目录
压缩与解压缩
压缩格式:
gzip
bzip2
xz
tar命令:
格式:tar [options]选项 压缩后的新名字 要压缩的文件
参数:c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-f: 目标文件
示例: [root@localhost ~]# ls [root@localhost ~]# usr anaconda-ks.cfg initial-setup-ks.cfg [root@localhost ~]# tar -jcf new.tar.bz2 usr //压缩为bzip2格式,压缩usr,压缩名为new.tar.bz2 [root@localhost ~]# ls usr anaconda-ks.cfg initial-setup-ks.cfg new.tar.bz2
grep
(过滤,用于查找文件里符合条件的字符串)
格式:
grep [选项] 关键字 [文件名]
参数:
-A 除了显示符合范本样式的那一列之外,并显示该行之后的内容
-B 除了显示符合范本样式的那一列之外,并显示该行之前的内容
-C 除了显示符合范本样式的那一列之外,并显示该行前后的内容
-i 或 --ignore-case : 忽略字符大小写的差别
-s 或 --no-messages : 不显示错误信息
-V 或 --version : 显示版本信息
-v 或 --invert-match : 显示不包含匹配文本的所有行
示例: [root@localhost ~]# grep -C 1 only anaconda-ks.cfg //过滤包含'only'的前后各一行 #version=RHEL8 ignoredisk --only-use=nvme0n1 autopart --type=lvm
df -h
(文件系统磁盘使用情况统计)
格式: df [options]选项...file... [root@localhost ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 devtmpfs 1.4G 0 1.4G 0% /dev tmpfs 1.4G 0 1.4G 0% /dev/shm tmpfs 1.4G 10M 1.4G 1% /run tmpfs 1.4G 0 1.4G 0% /sys/fs/cgroup /dev/mapper/rhel-root 17G 4.3G 13G 25% / /dev/nvme0n1p1 1014M 229M 786M 23% /boot [root@localhost ~]# df -h |awk '{print $3}' //查看第三列的内容 已用 0 0 10M 0 4.3G 229M [root@localhost ~]# df -h |awk 'NR==4{print $3}' //查看第三列第四行的内容 10M
find
(用来查找文件)
语法:
find path -option [ -print ] [ -exec -ok command ] {} ;
选项:
-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes
-type c : 文件类型是 c 的文件
d: 目录
f: 一般文件
-amin n : 在过去 n 分钟内被读取过
-atime n : 在过去n天内被读取过的文件
cmin n : 在过去 n 分钟内被修改过
-cnewer file :比文件 file 更新的文件
-ctime n : 在过去n天内被修改过的文件
示例: 将当前目录及其子目录下所有文件前缀为1的文件列出来 [root@localhost ~]# find . -name "1*" ./11 ./12 ./13 ./14 查找类型为目录的文件 [root@localhost ~]# find -type d . ./.config ./.config/procps 在当前目录下查找小于1k的文件 [root@localhost ~]# find . -size -1k ./abc ./11 ./12
重定向
重定向分为输出重定向,输入重定向 输出重定向分为两种: 覆盖重定向 > echo 'hello' > abc //将输出的内容'hello'存入文件abc中并覆盖 追加定向 >> echo 'hello' >> abc //将输出的内容追加到abc中 输入重定向 < cat > def < abc //将abc文件中的输入到def文件中
管道符
(把前面执行的结果交给后面的处理 ) |
示例: find -name abc |xargs rm -rf //查找文件abc然后交给后面处理
用户 user
(useradd 可用来建立用户帐号。帐号建好之后,再用 passwd 设定帐号的密码。而可用 userdel 删除帐号。使用 useradd 指令所建立的帐号,实际上是保存在 /etc/passwd 文本文件中)
用户id: 系统用户 1-999 普通用户1000-65535
useradd 创建用户 参数: -c<备注> 加上备注文字。备注文字会保存在passwd的备注栏位中。 -d<登入目录> 指定用户登入时的起始目录。 -D 变更预设值. -e<有效期限> 指定帐号的有效期限。 -f<缓冲天数> 指定在密码过期后多少天即关闭该帐号。 -g<群组> 指定用户所属的群组。 -G<群组> 指定用户所属的附加群组。 -m 自动建立用户的登入目录。 -M 不要自动建立用户的登入目录。 -n 取消建立以用户名称为名的群组. -r 建立系统帐号。 -s<shell> 指定用户登入后所使用的shell。 -u<uid> 指定用户ID。 示例: 添加一般用户: useradd tom 为添加的用户指定相应的用户组: useradd -g root tom 创建一个系统用户: useradd -r tom 为新添加的用户指定home目录: useradd -d /home/myda tom 创建用户并指定ID: useradd -u 1006 tom 要拒绝系统用户登录,可以将其 shell 设置为 /usr/sbin/nologin 或者 /bin/false: 创建一个不能登录的用户: useradd -s /sbin/nologin tom 或 useradd -d /usr/local/httpd -g alice -s /bin/false username usermod 修改用户账号的各项设定 格式: usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][-f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s <shell>][-u <uid>][用户帐号] 参数: -U 解除密码锁定 -L 锁定用户密码,使密码无效 -u<uid> 修改用户ID -e<有效期限> 修改帐号的有效期限 -d登入目录> 修改用户登入时的目录 -G<群组> 修改用户所属的附加群组 -s<shell> 修改用户登入后所使用的shell 示例: [root@localhost ~]# usermod -s /bin/bash apps //设置用户"apps"并允许登录 [root@localhost ~]# su - apps [apps@localhost ~]$ 改变用户的uid [root@localhost ~]# id tom uid=1003(tom) gid=1000(xiix) 组=1000(xiix) [root@localhost ~]# usermod -u 1010 tom [root@localhost ~]# id tom uid=1010(tom) gid=1000(xiix) 组=1000(xiix) userdel 删除用户,userdel可删除用户帐号与相关的文件。若不加参数,则仅删除用户帐号,而不删除相关文件 格式: userdel [-r] [用户帐号] 参数: -r 删除用户登入目录以及目录中所有文件。 示例: 仅删除用户 [root@localhost ~]# userdel tom [root@localhost ~]# id tom id: “tom”:无此用户
组 group
groupadd 创建一个新的工作组,新工作组的信息将被添加到系统文件中
相关文件:
/etc/group 组账户信息。
/etc/gshadow 安全组账户信息。
/etc/login.defs Shadow密码套件配置
格式:
groupadd [-g gid [-o]] [-r] [-f] group
参数:
-g:指定新建工作组的 id
-r:创建系统工作组,系统工作组的组ID小于 500
-o:允许添加组 ID 号不唯一的工作组
-f,–force: 如果指定的组已经存在,此选项将失明了仅以成功状态退出。当与 -g 一起使用,并且指定的GID_MIN已经存在时,选择另一 个唯一的GID(即-g关闭)
示例: 创建一个新的组,并添加组ID groupadd -g 444 alice groupdel 要从系统上删除群组时,可用groupdel(group delete)指令来完成这项工作。倘若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组 格式: groupdel [群组名称] 示例: 删除一个群组 [root@localhost ~]# groupdel alice
passwd
(用来更改使用者的密码,普通用户只能给自己设置密码,管理员可以给任何人设置密码,普通用户要遵循密码复杂性要求 ,最少8位)
语法: passwd [-k] [-l] [-u [-f]] [-d] [-S] [username] 参数: -d 删除密码 -f 强迫用户下次登录时必须修改口令 -w 口令要到期提前警告的天数 -k 更新只能发送在过期之后 -l 停止账号使用 -S 显示密码信息 -u 启用已被停止的账户 -x 指定口令最长存活期 -g 修改群组密码 指定口令最短存活期 -i 口令过期后多少天停用账户 选择参数: --help 显示帮助信息 --version 显示版本信息 示例: 普通用户更改自己的密码 [alice@localhost root]$ passwd 更改用户 alice 的密码 。 Current password: //输入当前密码,不显示 新的 密码: //输入新的密码,不显示 重新输入新的 密码://输入新的密码,不显示 passwd:所有的身份验证令牌已经成功更新。 设置密码的另一种方式: echo '密码' |passwd --stdin root //只有root用户可以设置 Linux红帽8破解密码步骤: 关机 开机 按字母e进入内核,编译当前条目 找到Linux开头的,在结尾添加rd.break 按 ctrl+x 重启以读写⽅式挂载 mount -o remount,rw /sysroot 回车 切换⾄真正操作系统的根 chroot /sysroot 回车 重置密码 echo '密码' | passwd --stdin root 回车 touch /.autorelabel 打标签 exit 退出 exit 退出
vi编辑器命令
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-exEaX7Ky-1626166203077)(C:\Users\Ahsidb\Pictures\Saved Pictures\vi编辑器模式.jpg)]
命令模式---->输入模式: a 在光标的后面转为输入模式 i 在光标的前面转为输入模式 o 在光标的下面转为输入模式 A 在光标的行尾转为输入模式 I 在光标的行首转为输入模式 O 在光标的上面转为输入模式 命令模式常用命令: g 跳到第一行 3gg 跳到第三行 G 跳到最后一行 dd 删除当前光标所在行 3dd 删除包含当前光标所在行内一共三行 D 删除当前光标所在行的内容 yy 复制当前行的内容 3yy 复制光标所在行的3行 p 粘贴到当前光标的前面面一行 P 粘贴到当前光标的后面一行 末行模式: :wq! 强制保存并退出 :q! 不保存退出 输入模式 ----> 命令模式: ESC 命令模式 > 末行模式 : 冒号
进程管理 ps
进程管理 ps 查看进程 ps aux | grep 进程名字 ps -ef | grep 进程名字 top 查看实时进程 负载平均值 (等待处理的进程) 杀进程: kill pid (默认是15,处理完杀死) kill -9(立即杀死) pid
权限管理
基础权限 chmod: r 读 4 w 写 2 x 执行 1 chmod u|g|o + | - | = 权限 filename chmod 755 filename (用数字表示权限来更改某一个文件的权限) 特殊权限 chmod: suid 4 针对应用程序设置 chmod u+s filename chmod 4755 filename sgid 2 针对目录设置 chmod g+s dir chmod 2755 dir sticky 1 chmod o+t dir hmod 1777 dir ACL文件访问控制列表: setfcl setfcl -m u:用户:权限 filename setfcl -m g:组:权限 filename 权限委派sudo: visudo 添加命令,使用绝对路径 用root用户进入visudo给alice用户提供创建用户和删除用户的权限 100 root ALL=(ALL) ALL 101 alice ALL=(ALL) /sbin/useradd, /sbin/userdel 登录alice用户 [root@localhost ~]# su - alice 上一次登录:四 7月 8 04:08:47 EDT 2021pts/0 上 [alice@localhost ~]$ sudo useradd QWQ [sudo] alice 的密码: //输入密码无显示 [alice@localhost ~]$ id QWQ uid=1011(QWQ) gid=1011(QWQ) 组=1011(QWQ)
软件管理
rpm管理: mount /dev/cdrom /mnt 挂载 rpm -ivh 安装包的路径 安装 [root@localhost ~]# rpm -ivh /mnt/AppStream/Packages/wget-1.19.5-10.el8.x86_64.rpm rpm -e pack-name(安装包的名字) 卸载 [root@localhost ~]# rpm -e wget rpm -qa | grep pack_name 查找所有已安装的包过滤包的名字 查询 [root@localhost ~]# rpm -qa |grep wget //没安装的话无回显 wget-1.19.5-10.el8.x86_64 rpm -ql pack_name 列出包安装时安装了哪些文件及文件位置 [root@localhost ~]# rpm -ql wget /etc/wgetrc /usr/bin/wget /usr/lib/.build-id rpm -qc pack_name 列出包安装后生成的配置文件在哪 [root@localhost ~]# rpm -qc wget /etc/wgetrc rpm -qd pack_name 帮助文档documentation [root@localhost ~]# rpm -qd wget /usr/share/doc/wget/AUTHORS /usr/share/doc/wget/COPYING /usr/share/doc/wget/MAILING-LIST rpm -qf /path/to/filename 查询文件是由哪个包提供的 [root@localhost ~]# rpm -qf /usr/bin/wget wget-1.19.5-10.el8.x86_64 yum |dnf 管理: yum -y install pack_name 安装 yum -y remove pack_name 卸载 yum provides *bin/命令 查看安装的包名和仓库信息 yum provides 路径 yum list all |grep pack_name [root@localhost ~]# yum list all |grep wget wget.x86_64 1.19.5-10.el8 appstream yum clean all 清理缓存
服务控制的方式
(CentOS6和CentOS7及以后的版本命令比较)
CentOS6及以前的版本命令: service SERVICE_NAME start //启动服务 service SERVICE_NAME stop //停止服务 service SERVICE_NAME status //查看服务状态 service SERVICE_NAME restart //重启服务 chkconfig --add SERVICE_NAME //添加到开机自启的服务里去 chkconfig SERVICE_NAME on ///设置服务开机自启 chkconfig SERVICE_NAME off //设置服务开机不自启 CentOS7及以后的版本命令: systemctl start SERVICE_NAME //启动服务 systemctl stop SERVICE_NAME //停止服务 systemctl status SERVICE_NAME //查看服务状态 systemctl restart SERVICE_NAME //重启服务 systemctl enable SERVICE_NAME //设置服务开机自启 systemctl disable SERVICE_NAME //设置服务开机不自启
网卡回归传统名
步骤
1.修改网卡配置文件的名字并改变里面的内容
2.编辑/etc/default/grub,在rhgb前面加上net.ifnames=0 biosdevname=0
3.生成配置文件grub2-mkconfig -o /etc/grub2.cfg
4.reboot
1.修改网卡配置文件的名字并改变里面的内容 [root@localhost ~]# cd /etc/sysconfig/network-scripts/ [root@localhost network-scripts]# ls ifcfg-ens33 //查看网卡名 [root@localhost network-scripts]# mv ifcfg-ens33 ifcfg-eth0 //修改网卡名 // vi ifcfg-eth0 精简配置: TYPE=Ethernet //类型为以太网 BOOTPROTO=static //网卡获取方式设为静态 DEVICE=eth0 //设备名与网卡名相同 NAME=eth0 //网卡名 ONBOOT=yes //开机自启 IPADDR=192.168.220.10 // IP NETMASK=255.255.255.0 //子网掩码 GATEWAY=192.168.220.2 //网关 DNS1=114.114.114.114 //域名 2.编辑/etc/default/grub,在rhgb前面加上net.ifnames=0 biosdevname=0 // vi /etc/default/grub 5 GRUB_TERMINAL_OUTPUT="console" 6 GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/cs-swap rd.lvm.lv=cs/root rd.lvm.lv=cs/swap net.ifnames=0 biosdevname=0 rhgb quiet" 7 GRUB_DISABLE_RECOVERY="true" 3.生成配置文件grub2-mkconfing -o /etc/grub2.cfg [root@localhost ~]# grub2-mkconfig -o /etc/grub2.cfg 4.重启 [root@localhost ~]# reboot
ifconfig
显示或设置网络设备
[root@localhost ~]# ifconfig //查看ip信息 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.220.7 netmask 255.255.255.0 broadcast 192.168.220.255 inet6 fe80::18d8:1102:1c2f:cc64 prefixlen 64 scopeid 0x20<link> lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> [root@localhost ~]# ifconfig eth0 //查看某一个ip信息 eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.220.7 netmask 255.255.255.0 broadcast 192.168.220.255 inet6 fe80::18d8:1102:1c2f:cc64 prefixlen 64 scopeid 0x20<link> [root@localhost ~]# ifconfig lo down //禁用某一个网卡 [root@localhost ~]# ifconfig lo lo: flags=8<LOOPBACK> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 loop txqueuelen 1000 (Local Loopback) [root@localhost ~]# ifconfig lo up //启用某一个网卡 [root@localhost ~]# ifconfig lo lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host>
ip
用来显示或操纵Linux主机的路由,网络设备,策略路由和隧道,是Linux下较新的功能强大的网络配置工具
ip 对象 操作(ip addr show)
[root@localhost ~]# ip addr show //查看ip信息,ip a也可以查看 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:0c:29:0a:e0:07 brd ff:ff:ff:ff:ff:ff inet 192.168.220.7/24 brd 192.168.220.255 scope global noprefixroute eth0
ip link(网卡) set(设置) lo down
[root@localhost ~]# ip link set lo down //禁用网卡lo [root@localhost ~]# ip a 1: lo: <LOOPBACK> mtu 65536 qdisc noqueue state DOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever
ss
监听网络的状态,ss(更高级)和netstat一样
LISTEN 监听状态
ESTABLISHED 已建立连接
TIME_WAIT 等待状态
[root@localhost ~]# ss -an //查看系统正在运行的内容 1023 0:976 mptcp LISTEN 0 128 0.0.0.0: 22 0.0.0.0:* mptcp ESTAB 0 52 192.168.220.7: 22 192.168.220.1:60624 mptcp ESTAB 0 0 [root@localhost ~]# ss -ant //t(tcp的状态) State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 128 0.0.0.0:22 0.0.0.0:* ESTAB 0 52 192.168.220.7:22 192.168.220.1:60624 ESTAB 0 0 192.168.220.7:22 192.168.220.1:59095 LISTEN 0 128 [::]:22 [::]:* [root@localhost ~]# ss -antl //l(监听的状态) State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 128 0.0.0.0:22 0.0.0.0:* LISTEN 0 128 [::]:22 [::]:* [root@localhost ~]# ss -antlp //p(进程) State Recv-Q Send-Q Local Address:Port Peer Address:Port Process LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=970,fd=5)) LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=970,fd=7))
硬盘
分为:
IDE硬盘 hd ( a | b | c |…) //硬盘命名格式
SCSI硬盘 sd ( a | b | c |…) //硬盘命名格式
虚拟化硬盘 vd ( a | b | c |…) //硬盘命名格式
分区
目的:方便管理
MBR分区和GPT分区
MBR分区:
主分区 (P:Primary)1-4
最多只能有4个主分区
扩展分区(E:Extend) 2-4
占个位子,不能使用,主要目的是为了创建逻辑分区使用 1k
逻辑分区(L:Logical) 5…
命名从5开始
格式化
目的是为了创建文件系统 mkfs (Make FileSystem)
windows文件系统:
fat32 单个文件不能 超过4G
ntfs 单个文件可以超过4G,兼容性差
exfat 单个文件可以超过4G,兼容性好
Linux文件系统:
ext2 ext3 ext4 xfs vfat brfs …
挂载
分为临时挂载(命令临时挂载)和永久挂载(写进配置文件/etc/fstab)
[root@localhost ~]# lsblk //列出所有磁盘信息 NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 20G 0 disk ├─sda1 8:1 0 1G 0 part └─sda2 8:2 0 19G 0 part [root@localhost ~]# blkid /dev/sda1 //查看sda1的UUID和其他信息 /dev/sda1: UUID="2186ad89-b271-4aec-87e9-2f662943333d" BLOCK_SIZE="512" TYPE="xfs" PARTUUID="7bf0ca76-01" [root@localhost ~]# mount /dev/sr0 /mnt //临时挂载,再次开机失效 mount: /mnt: WARNING: device write-protected, mounted read-only. [root@localhost ~]# vi /etc/fstab //写进配置文件进行永久挂载,再次开机将自动挂载 [root@localhost ~]# cat /etc/fstab # /etc/fstab # Created by anaconda on Wed Jul 7 08:42:50 2021 # Accessible filesystems, by reference, are maintained under '/dev/disk/'. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info. # After editing this file, run 'systemctl daemon-reload' to update systemd # units generated from this file. /dev/mapper/cs-root / xfs defaults 0 0 UUID=2186ad89-b271-4aec-87e9-2f662943333d /boot xfs defaults 0 0 /dev/mapper/cs-swap none swap defaults 0 0 UUID="2186ad89-b271-4aec-87e9-2f662943333d" /mnt xfs defaults 0 0 //永久挂载sda1 //默认格式 :UUID 挂载目录 文件系统 defaults 0 0
## 日志
kernel —>物理终端(/dev/console)—> /var/log/dmesg
# dmesg 或 # cat /var/log/dmesg
/sbin/init
/var/log/messages:系统标准错误日志信息;非内核产生的引导信息;各子系统产生的信息
/var/log/maillog:邮件系统产生的日志信息
/var/log/secure:与安全相关的日志信息
信息详细程度:日志级别
系统日志服务:
syslog:centos5
rsyslog:centos6,是syslog的升级版
特性:
多线程
支持UDP,TCP,SSL,TLS协议
支持使用MySQL、PGSQL和Oracle实现日志存储
默认没启用此功能,需要加载rsyslog支持此类存储方式的模块,并配置其可使用mysql存储日志
强大的过滤器,可实现过滤系统日志信息中的任何部分
自定义输出格式
elasticsearch,logstash,kibana = elk
elasticsearch:存储,分析日志
logstash:日志收集工具
kibana:前端展示工具
syslog和rsyslog服务均有两个进程:
syslogd:系统,非内核产生的日志信息。
klogd:内核,专门负责记录内核产生的日志信息。
syslog服务的配置文件:/etc/syslog.conf
rsyslog服务的配置文件:/etc/rsyslog.conf
配置文件格式定义为: facility.priority action
facility可以理解为日志的来源或设备,目前常用的facility有以下几种:
auth #认证相关的
authpriv #权限、授权相关的
cron #任务计划相关的
daemon #守护进程相关的
kern #内核相关的
lpr #打印相关的
mail #邮件相关的
mark #标记相关的
news #新闻相关的
security #安全相关的,与auth类似
syslog #syslog自己的
user #用户相关的
uucp #unix to unix cp相关的
local0到local7 #用户自定义使用
* # *表示所有的facility
priority(log level)日志的级别,一般有以下几种级别(从低到高),级别越低,信息越详细:
debug #程序或系统的调试信息
info #一般信息
notice #不影响正常功能,需要注意的消息
warning/warn #可能影响系统功能,需要提醒用户的重要事件
err/error #错误信息
crit #紧急,比较严重的
alert #必须马上处理的
emerg/panic #会导致系统不可用的
* # *表示所有的日志级别
none #跟*相反,表示啥也没有
action(动作)日志记录的位置:
系统上的绝对路径 #普通文件,如:/var/log/xxx
| COMMAND #管道,通过管道送给其他的命令处理
终端 #终端,如:/dev/console
@HOST #远程主机(远程主机必须要监听在tcp或udp协议514端口上提供服务),如:@10.0.0.1
用户 #系统用户,如:root
* #登录到系统上的所有用户,一般emerg级别的日志是这样定义的
定义格式例子:
mail.info /var/log/maillog 表示将mail相关的,级别为info及info以上级别的信息同步记录到/var/log/maillog文件中
mail.* -/var/log/maillog 表示将mail相关的所有日志信息异步记录到/var/log/maillog文件中,路径前的“-”表示异步模式
auth.=info @10.0.0.1 表示将auth相关的,级别为info的信息记录到10.0.0.1主机上去。前提是10.0.0.1要能接收其他主机发来的日志信息
user.!=error 表示记录user相关的,不包括error级别的信息
user.!error 与user.error相反
*.info 表示记录所有的日志信息的info级别
mail.* 表示记录mail相关的所有级别的信息
. 表示 记录所有级别的所有日志信息
cron.info;mail.info 多个日志来源可以用分号隔开
cron,mail.info 与cron.info;mail.info是一个意思
mail.*;mail.!=info 表示记录mail相关的所有级别的信息,但是不包括info级别的
文件记录(/var/log/message)的日志的格式:
事件产生的日期时间 主机 进程(pid): 事件内容
有些日志记录为二进制格式:/var/log/wtmp,/var/log/btmp
/var/log/wtmp:当前系统成功登录的日志,可使用last命令查看其内容
/var/log/btmp:当前系统失败的登录尝试的日志,可使用lastb命令查看其内容
lastlog命令:显示当前系统每一个用户最近一次的登录时间
配置rsyslog服务器:
编辑配置文件(/etc/rsyslog.conf),将下列内容前面的注释去掉,然后重启rsyslog服务即可:
#$ModLoad imudp
#$UDPServerRun 514
#$ModLoad imtcp
#$InputTCPServerRun 514
配置使用基于mysql存储日志信息的rsyslog服务器:假定此处的mysql和rsyslog是两台不同的主机
注意:请关闭防火墙和SELINUX
a) 确保mysql服务正常
b) 在rsyslog服务器上安装rsyslog-mysql模块(yum -y install rsyslog-mysql)
c) 在mysql服务器上授权一个用户能够对Syslog数据库有写权限
GRANT ALL ON Syslog.* TO ‘syslog’@‘172.16.%.%’ IDENTIFIED BY ‘syslogpassword’;
d) 配置mysql服务器,在主配置文件(/etc/my.cnf)中添加下面两行内容,并重启mysql服务
skip_name_resolve = on
innodb_file_per_table = on
e) 在rsyslog服务器上执行sql语句
mysql -usyslog -h172.16.100.9 -psyslogpassword < /usr/share/doc/rsyslog-mysql-5.8.10/createDB.sql
f) 配置rsyslog服务器能使用mysql存储日志。编辑/etc/rsyslog.conf文件并重启rsyslog服务
在### MODULES ###段下面添加如下内容:
$ModLoad ommysql
在### RULES ###段下面添加如下内容:
*.info;mail.none;authpriv.none;cron.none :ommysql:172.16.100.9,Syslog,syslog,syslogpassword
ommysql:表示使用ommysql模块存储日志至mysql
Syslog:表示mysql中的Syslog数据库
syslog:表示连接mysql的用户
syslogpassword:表示连接mysql的密码
g) 配置webserver,支持php
yum install httpd php php-mysql php-gd
service httpd start
h) 配置前端展示界面(loganalyzer软件)
tar xf loganalyzer-3.6.5.tar.gz
mv loganalyzer-3.6.5/src /var/www/html/loganalyzer
cp -a loganalyzer-3.6.5/contrib/*.sh /var/www/html/loganalyzer/
cd /var/www/html/loganalyzer/
chmod +x *.sh
./configure.sh
./secure.sh
chmod 666 config.php #如果没有此文件则手动touch一个即可
在浏览器上输入:http://IP/loganalyzer/install.php
源码安装三部曲
1、./configure --prefix=安装路径 --with
2、make //编译
3、make install //安装
//安装必要的工具 [root@localhost ~]# yum -y install gcc gcc-c++ [root@localhost ~]# yum -y install make [root@localhost ~]# yum -y install wget [root@localhost ~]# yum -y install pcre-devel //下载 [root@localhost ~]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/httpd/httpd-2.4.48.tar.gz [root@localhost ~]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/apr/apr-1.7.0.tar.gz [root@localhost ~]# wget https://mirrors.tuna.tsinghua.edu.cn/apache/apr/apr-util-1.6.1.tar.gz //解压 [root@localhost ~]# tar xf apr-1.7.0 [root@localhost ~]# tar xf apr-util-1.6.1 [root@localhost ~]# tar xf httpd-2.4.48 [root@localhost ~]# ls apr-1.7.0 apr-1.7.0.tar.gz apr-util-1.6.1 apr-util-1.6.1.tar.gz httpd-2.4.48 httpd-2.4.48.tar.gz //进入apr-1.7.0目录,将配置文件configure中的 "$RM \$cfgfile" 删除或注释掉 [root@localhost ~]# cd apr-1.7.0/ [root@localhost apr-1.7.0]# vi configure //./configure --prefix=安装路径 --with [root@localhost apr-1.7.0]# ./configure --prefix=/usr/local/apr [root@localhost apr-1.7.0]# make && make install #编译和安装 //./configure --prefix=安装路径 --with [root@localhost ~]# cd apr-util-1.6.1/ [root@localhost apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr [root@localhost apr-util-1.6.1]# make && make install #编译和安装 //./configure --prefix=安装路径 --with [root@localhost ~]# cd httpd-2.4.48/ [root@localhost httpd-2.4.48]# ./configure --prefix=/usr/local/httpd --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util [root@localhost httpd-2.4.48]# make && make install #编译和安装 //关闭防火墙和selinux [root@localhost ~]# systemctl stop firewalld.service [root@localhost ~]# setenforce 0 [root@localhost ~]# /usr/local/httpd/bin/apachectl start #启动程序 //浏览器访问IP地址
xf httpd-2.4.48
[root@localhost ~]# ls
apr-1.7.0 apr-1.7.0.tar.gz apr-util-1.6.1 apr-util-1.6.1.tar.gz httpd-2.4.48 httpd-2.4.48.tar.gz
//进入apr-1.7.0目录,将配置文件configure中的 “$RM $cfgfile” 删除或注释掉
[root@localhost ~]# cd apr-1.7.0/
[root@localhost apr-1.7.0]# vi configure
//./configure --prefix=安装路径 --with
[root@localhost apr-1.7.0]# ./configure --prefix=/usr/local/apr
[root@localhost apr-1.7.0]# make && make install #编译和安装
//./configure --prefix=安装路径 --with
[root@localhost ~]# cd apr-util-1.6.1/
[root@localhost apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@localhost apr-util-1.6.1]# make && make install #编译和安装
//./configure --prefix=安装路径 --with
[root@localhost ~]# cd httpd-2.4.48/
[root@localhost httpd-2.4.48]# ./configure --prefix=/usr/local/httpd --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
[root@localhost httpd-2.4.48]# make && make install #编译和安装
//关闭防火墙和selinux
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# /usr/local/httpd/bin/apachectl start #启动程序
//浏览器访问IP地址
这篇关于Linux命令的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-18git仓库有更新,jenkins 自动触发拉代码怎么配置的?-icode9专业技术文章分享
- 2024-12-18Jenkins webhook 方式怎么配置指定的分支?-icode9专业技术文章分享
- 2024-12-13Linux C++项目实战入门教程
- 2024-12-13Linux C++编程项目实战入门教程
- 2024-12-11Linux部署Scrapy教程:新手入门指南
- 2024-12-11怎么将在本地创建的 Maven 仓库迁移到 Linux 服务器上?-icode9专业技术文章分享
- 2024-12-10Linux常用命令
- 2024-12-06谁看谁服! Linux 创始人对于进程和线程的理解是…
- 2024-12-04操作系统教程:新手入门及初级技巧详解
- 2024-12-04操作系统入门:新手必学指南