一、开关机相关:
shutdown -h now 立刻关机 -h +10 10分钟后关机 init 0 关机
halt 停止系统,需人工关闭;poweroff 停系统且关闭电源
reboot 重启;shutdown -r now 立刻重启;-r +1 1分钟后重启;init 6重启;
shutdown -h 20:00 shutdown -c 取消; logout注销
启动级别0-6 0关机;1单用户模式;2多用户模式;3文本模式 ;4未使用 ;5图形界面; 6重启
sysvinit 设置 :
systemctl get-default 查看开机启动级别
systemctl set-default multi-user.target #设置默认第3启劢级别
systemctl set-default graphical.target #设置默认第5启劢级别
systemctl isolate graphical.target #切换级别为图形界面
systemctl ioslate multi-user.target #切换级别为字符界面
runlevel查看当前级别 3 5 表示从3级切换到5级;
实战-加密 grub 防止黑客通过单用户系统破解 root 密码;
实战-通过 liveCD 进入救模式-重装 grub 修复损坏的系统;
实战-当 MBR 引导记录损坏后-重装 grub 进行修复;
实战-在 centOS8 下误删除 grub 文件进行修复;
设置服务器来电自动开机---bios设置 int per 项目--superIO --restoe on--改为power on
设置服务器自动开机 power man setup---wake up event set --resume by rtc alarm--enable
然后设置日期v
ctrl+a 行首;ctrl+e 行尾;ctrl+u清除光标前;ctrl+k清除光标后
ctrl +d 退出中端 相当于exit ctrl +R 搜索历史命令
ctrl+shit+T 打开一个中端,ctrl+shift+加号或者减号 增大或者减小字体
tty 查看中端; echo aaa > /dev/pts/1 不同的中端通讯
显示tty控制台中端(系统控制台登录) 显示 pts是伪终端(xshell登录)
who 查看登录 w 显示登录用户
wall “shutdown”全部中端广播将被关机
二、文件查看相关命令等:
scp /etc/hosts root@192.168.1.30:/etc/
scp remote@192.168.1.29:/usr/local/sin.sh /home/ 将远程主机拷贝到本地
cat /etc/shells 查看所有的shell类型;
cat tac反看 -n显示行号,-E显示换行符。nl aaa #nl是专门显示行号的
more aaa.txt #所有的读完退出来,不支持后退;
less 可以用pageup 和pagedown翻页 读完后按q退出
less -N 显示行号 q退出
head 默认只读前10行; head a.b -n3 读前三行
tail 默认只读后10行 tail a.b -n3 ;
tail -f /var/log/secure #在一个终端执行此命令动态查看文件内容 -f动态显示;
tailf /var/log/secure #在一个终端执行此命令动态查看文件内容
grep root /etc/passwd grep root < /etc/passwd 两种写法
> cpu.txt 清空一个文件
cat > a.txt << eof 以eof开始,直到再次输入eof结束
0:为STDIN 标准输入;1:STDOUT 标准输出; 2:STDERR 标准错误
错误重定向:ls /etc/passwd aaaa 2> ccc.txt 通常会提示没有该文件使用了2>标准错误
输出,是将错误信息保存到ccc.txt中, 2>> 也可以进项追加。
echo aaaa > /dev/null /dev/null 黑洞 ;zero
cat /etc/passwd xxx &> /dev/null 将标准输出和错误输出全部重定向到/dev/null 中,
也就是将产生的所有信息丢弃;
df -h | tee file.txt 将输出文件存入到file.txt中 ; df -h | tee -a disk.log 内容追加用-a
df -hT | cat >> disk.log 可以使用来记录日志;
echo jiajiakang | passwd haohao --stdin
echo 输入到屏幕 >清空 >>追加 echo www.baidu.com >a
echo aaa>aaa.txt echo aaaaa>>aaa.txt
printf "www\n" 输出换行 printf "%s\n" 1 2 3 4
三、查看相关信息等:
id aaa 查看用户id;su - haohao 切换用户同时修改环境变量 ;su切只换角色,默认是root
#表示root用户登陆 $表示普通用户
cat /etc/shells查看所有shell类型,可通过cat passwd查看使用哪个shell
rpm -q centos-release cat /etc/centos-release 查看版本
rpm -q redhat-release cat /etc/redhat-release
uname -a 查看内核; uname -m 查看位数;uname -r 具体内核;
hostname用户名;hostname abc.cn 临时修改用户名; vim /etc/hostname 永久生效;
df -h 查看硬盘 df -hi 查看inod ; ls /dev/sd* 查看所有连接的硬盘; df -hT 增加文件类型
du -sh /etc 查看文件大小
which ls ;whereis ls 所在的位置,脚本路径,查看位置及相关文件;whatis ls;man ls ;
man cd pinfo cd
ls --help 类似于网络中的?help cd 或者-h
pstree -p | grep http
hwclock显示bios时间、硬件时钟 hwclock -w 将硬件时钟设置为当前的系统时间
hwclock -s #以硬件时间为准,同步到系统时间
date 显示系统时间时间 ;date -s 设置系统日期时间; date -s "2020-10-01 16:00:00"
date -d '+1months'+%F 加一个月显示 date -d '+1day' 加一天显示
date +%F #显示格式为:2022-03-01
ntpdate ntp1.aliyun.com 同步系统时间到阿里云 yum -y install ntpdate
当前时区是 CTS 东八区
vim /etc/chrony.conf 修改系统同步(ntp)时间,按照如下操作
#pool 2.centos.pool.ntp.org iburst 修改为 server ntp.aliyun.com iburst
然后再:systemctl restart chronyd
time测试一个命令运行的时间 time ls -l /etc/ #real实际使用时间 user用户使用 sys内核使用
cal日历 ; cal 2020 ; cal -n7 ; -w第几周;-j 显示当年的第几天
dmidecode 可以采集有关硬件方便的所有信息;
如下为根下的目录介绍:
bin 存放二进制命令; sbin存放级别高的命令;dev存放设备文件;/boot存放内核启动;
etc存放配置文件;home用户家目录;lib库文件;mnt,media临时一般挂载存储设备;
tmp存放临时文件;var系统日志等;proc系统内存的映射,查看硬件信息;sys存放硬件文件;
opt可选; run系统运行时的数据;srv 服务目录一般是空的; usr自己安装的库文件;
lib lib64 一般是库文件,都在usr目录下;
tail -n3 /var/log/secure 查看谁登陆了我的电脑
查看登录 utmpdump /var/log/wtmp
指定用户 utmpdump /var/log/wtmp | grep root
指定IP utmpdump /var/log/wtmp | grep 192.168.1.100
登录失败 utmpdump /var/log/btmp
四、文档显示相关信息等:
cd . 进入自己的目录; cd .. 返回上级目录; cd或者 cd ~ 进入家目录; cd - 回退;./当前目录
快速查找命令:1、上下光标;2、ctrl+r 然后输入命令关键字 然后找到对应命令 再然后按右光标键;
3、 !数字 4、 !字符串,会匹配最近一次;
!1065 调用1065的命令; !-2 调用上上一个命令; !!调用上一个命令; !c 模糊匹配
ESC . 同时按调用上个命令后面的内容,或者用!$
ls -a所有文件;ls -l文件详细信息;ls -d当前目录信息;ls . 当前目录内容; ls .. 上级目录
ls -lh 以兆显示文件大小
-S 文件大小排序,默认从大到小排序 ls -lS /root/ -r 是文件名从小到大排序 ls -lSr
-t是表示时间 ls -ltr 表示时间从小到大,默认从大到小;
ls -ld /bin 查看软连接
ls -li 或者ls -i 看到文件名对应的 inode 号码 ; ls -i /etc 整个文件的inod; ls -id /etc文件目录的id
.bash 点表示隐藏文件 可以重命名+. 即可改为隐藏文件
history -c 全部清空 ; history -d 100; -w 保存命令到历史文件中,一般是家 .bash_history
修改历史命令 vim ~/.bash_history
source /root/.bashrc 仅设置当前用户的永久别名。或者 . /root/.bashrc
vim /etc/bashrc 或者vim /root/frofile 修改别名对所有用户都有效
五、权限和用户管理相关设置:
Linux 用户三种角色:超级用户(root),普通用户(系统用户和本地用户),虚拟用户(用来登录系统的)
root超级用户 ID=0;系统用户 ID=1-999 ,1-499centos6版本;本地用户1000以上;
group存放组信息; shadow存放密码;
useradd /groupadd 添加用户及组 -m创建用户家目录(默认);-u指定UID;-g指定GID基本组;
-G指定附加组;-s默认用户登陆shell的路径;-d指定家目录位置;-M不创建家目录;
adduser xuegod4 创建用户的另外一个命令
useradd -g xinxi zhangaho 指定用户组;useradd -G jjk,oracle,xinxi zhangho 指定附属组
passwd/gpasswd -l 锁定;-u解锁;-d删除密码;-n密码最少天;-x密码最多天
echo 123456 | passwd --stdin xuegod #不交互设置密码;
userdel/groupdel -r 删除用户的时候同时删除家目录;
usermod/groupmod 修改用户/组 -u修改uid;-g修改gid;-aG追加新的附加组;-s修改bash
-m修改家目录;-c修改注释;-e指定过期时间;-L锁定账号,类似于禁用;-U解锁账号
-d 宿主目录 -m 选项会自动创建新目录并且移内容到新目录里面
控制添加用户规则文件的两个文件:/etc/default/useradd 和 /etc/login.defs
例子:
egrep -v "^$|^#" /etc/login.defs
MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 99999 #用户密码最长使用时间,多少天后会有提醒
PASS_MIN_DAYS 0 #用户密码最短使用时间,意思是多少天内不能修改密
cat /etc/default/useradd
/etc/default/useradd 文件中的内容如下:
GROUP=100 #新创建用户时默认初始组的 GID 号(公共组),现在使用的都是私有组机制
命令:chage 了解一下, 后期记不住时,可以直接 vim 修改 shadow 文件
-m:密码可更改的最小天数。为 0 时代表任何时候都可以更改密码
#注意:文件的拥有者一定可写入文件,如果修改为000,拥有者可写入,但是不能读取,root除外;
#安装完系统会生成 passwd备份文件。系统安装好后,新增加的用户不会写到/etc/passwd-
#安装完系统会生成 shadow备份文件。系统安装好后,新增加用户的密码信息不会写到/etc/shadow-
chown 修改所属用户和组 chown root:root aaa ; chown root:aaa ;chown :root aaa ;
chgrp root aaa 修改所属组 -R 递归修改(目录下所有内容都修改,否则只修改目录);
chmod 修改权限 chmod rwxrwxrwx aaa
chmod u=r-- aaa ; chmod g=r-- aaa ;chmod o=r-- aaa ;
chmod g-w aaa;chmod g+w aaa; chmod 777 aaa ;
chmod a+x aaa; 所有的都加执行权限;
特殊权限:suid ;sgid; stickybit(粘滞位)和文件扩展acl
suid:u+s或者u=4 chmod u+s /usr/bin/less 或者chmod 4755 /usr/bin/less只针对二进制;
s位是普通用户来继承root权限 chmod u+s /bin/rm 注意小s和大S区别,大S是当s位上没有小写x时
可执行权限,对目录无效。瞬间提升一下具有root权限 例子:passwd修改密码时;
chmod u-s /usr/bin/less #去掉 less 命令的 suid 权限;
sgid:g+s或者g=2; chmod 2664; chmod g+s test 可以给二进制程序设置,也可以针对目录
新创建的文件会继承上级目录的权限; sgid的权限显示就是大S ;有x的时候是小写的s;
chmod g+s /home/admins组成员继承sgid位;
stickybit:o+t 或者o=1;chmod 1777 /test 限定:只作用于目录
功能:目录下创建的文件只有 root、文件创建者、目录所有者才能删除。
chmod o+t glabfile 粘滞位权限字符t/T 类似于共享。
chattr +i aaa.sh 设置扩展属性,系统对他不能做任何修改; +a 只能追加内容>> ;+i 不能被修改;
+i 如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件
chattr -i aaa.sh 去掉属性; lsattr aaa.sh查看文件系统扩展属性、lsattr -d 查看目录;
扩展acl:查看getfacl /tmp/a.txt权限 前提是不改变文件权限的前提下。增加了扩展权限后面有+号;
setgacl aaa查看
setfacl -m u:zhang:rw,u:hao:--x aaa #针对不同用户设置 文件 访问权限
setfacl -m d:u:zhang:rw,d:u:hao:--x AAA #针对不同用户设置 目录 访问权限
-R 给目录下所有文件,一定要在m前加;
setfacl -x u:zhang:rw aaa去掉权限 setfacl -b u:zhang:rw aaa b是取消所有权限
setfacl -b aaa b是取消所有权限
六、rpm及yum相关配置:
在安装更新时用全名,查包、卸载包是用软件包名,默认在/var/lib/rpm目录下查询包的信息;
/etc/yum.repos.d yum 源位置
rpm -ivh http 安装程序;rpm -e http 删除安装软件--nodeps 忽略依赖包关系;建议用yum卸载;
rpm -ivh /mnt/Packages/zsh......
rpm -ivh –nodeps 忽略依赖包关系;--replacepkgs 重新安装替换;--force强行安装实现降级或重装;
rpm -Uvh 升级软件包,有老版本则升级否则安装;-Fvh 有老版则升级否则退出;
因为升级时会有一些依赖包要解决。 所以一般我们使用 yum update 包来升级;
rpm -q zip 查找相关的软件是否已经安装(-q与其他匹配使用) -qa查询所有已安装包;
-f(file)系统文件名(查询系统文件所属哪个软件包),反向查询
rpm -qf /usr/bin/find 查看find命令是由哪个安装包安装的;
rpm -qf /usr/bin/pstree 查看安装的包; rpm -qf `which vim` 把which vim 输出的结果查询;
rpm -qi zip-3.0-11.el7.x86_64已安装包的详细信息或者作用,已安装的用-qi,
rpm -qpi +rpm包 说未安装包的详细信息或者作用;
-qR 查询软件包的依赖性; -ql(list) 查询软件包中文件安装的位置;
rpm -qpl +rpm包 查看rpm安装后,将生成哪些文件;
rpm --rebuilddb 重建数据库;--initdb 初始化数据库;
rpm -V 检验安装的文件是否被修改,用于检验命令有没有被黑客修改;
rpm -Vf /usr/bin/find 查看该命令或文件,有没有被修改;
rpm -V findutils 检查包有没有被修改;
S.5....T. /usr/bin/find 注:如果出现的是点,表示测试这一项,没有被修改
rpm -Va 查看系统中所有安装包及文件是否被修改; rpm -Va > rpm_check.txt 重定向过去;
-K 验证合法性和完整性;
yum clean all 清空yum缓存; yum repolist 下载软件表单;
yum list 查看仓库中的软件包列表(未安装),同时生成缓存列表; yum list | grep zip
yum install -y zip 安装包,解决依赖关系;
yum list installed | grep zsh 查看已经安装的软件
yum list updates 列举出可升级的软件;
yum update zip.X86.64 升级软件包
yum -y remove zip.x86_64 删除已安装的 -----卸载包
yum info httpd 查询包的作用
yum provides /usr/bin/find 查看命令是哪个软件包安装的
yum search httpd 软件包的包名和详细描述信息中按关键字搜索,查找包括 httpd 字符的软件包
yum grouplist 查看有哪些软件包组
yum groupinstall GROUPNAME(组名称)
yum groupinstall 'Development tools' 安装开发工具软件包组
yum -y upgrade 升级所有包,不改变软件设置和系统设置,版本升级内核不改变(推荐)
yum -y update 升级所有包,改变软件设置和系统设置,系统版本内核都升级
yum install --downloadonly --downloaddir=/tmp/pages zsh 下载并且安装到指定位置
wget -O /etc/yum.repos.d/CentOS-Base.repo http://www.aliyun.com
下载文件,-O把下载的文件存到另一个文件中
wget http://test.com/testfile.zip ->下载指定文件到当前文件夹
wget -O wordpress.zip http://test.com/download ->指定保存名字
wget --limit-rate=300k http://www.linuxde.net/testfile.zip ->限制下载速度
wget -c http://www.linuxde.net/testfile.zip ->断点续传
wget -b http://www.linuxde.net/testfile.zip ->后台下载
vim /etc/yum.repord/CentOS-Base.repo找到如下:
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
$releasever等于系统版本 ;$basearch/等于x86_64
如果下载下来的repo不能用,打开阿里云http://mirrors.aliyun.com/centos/查看最新版本
然后进行替换sed -i 's/$releasever/7.4.1708/g' /etc/yum.repo.d/CentOS-Base.repo
源码编译安装3把斧:(lamp和lnmp时会用到)----也就是软件安装 tar.gz格式文件
1、tar xvf nginx-1.12 #cd nginx-1.12
./configure --prefix=/usr/local/nginx 指定安装路径,为了删除时方便 autoreconf先集成
(make clean执行错误时,需要执行清理)
2、make -j 4 四核编译; make tests 或者test ; echo $? 如果返回为0就没有问题;
3、make install 然后进行安装;
make clean //清除上次的 make 命令所产生的 object 和 Makefile 文件。使用场景:当需要重
新配置执行 configure 时,需要先执行 make clean。如下:
make clean (仅仅清除之前的可执行文件及配置文件)
rm -rf Makefile objs 删除安装路径文件;
./configure --prefix=/usr/local/nginx 重新进行配置
源码编译出错的5种完美解决办法:
1、./configure 编译时报错 某某extsfs...找不到
招一、cd /mnt/Packages/
招二、rpm -ivh extsfs 按tab自动补齐,然后进行rpm -ivh 安装缺少的包
招三、但如果无法补齐,使用如下招
2.2、然后再查ls *sfs* 如果能查到,然后进行rpm -ivh 安装缺少的包
招四、http://www.rpmseek.com/index.html 上查找缺少的包
招五、yum search extsfs (推荐) 查询具体包的名字,然后进行rpm -ivh 安装缺少的包
如果提示已经安装了,./configure时还是有问题,这种情况需要安装库的开发文件
rpm -ivh /mnt/Packages/e2fsprogs-devel-1.41.。。。。.rpm
然后再进行编译
如果你下载到的软件名是soft.bin,一般情况下是个可执行文件,安装方法如下:
1、打开一个终端,su -成root用户;2、chmod +x soft.bin;3、./soft.bin 运行这个命令
实战 2:
在 centos8 上,基于光盘镜像创建一个本地 yum 源。
在 CentOS8 光盘镜像中把 yum 软件源分成了两部分。
一个是 BaseOS 存储库以 RPM 格式提供操作系统核心功能的软件
一个是 AppStream 存储库以 RPM 格式提供用户空间中运行的软件
centos7光盘镜像rpm 软件安装包都是放在/mnt/Packages/下
centos8光盘镜像rpm 软件安装包分别放在/mnt/BaseOS/Packages/和/mnt/AppStream/Packages/下
例:安装 centos epel 扩展 yum 源。
注:epel 源是对 centos 系统中自带的 base 源的扩展。(因为不是所有软件包都放在 base 源里)
[root@xu ~]# yum -y install epel-release
[root@xu ~]# ls /etc/yum.repos.d/epel.repo 这就是安装的epel源阿里 epel 源安装;
https://developer.aliyun.com/mirror/epel
七、进程管理相关:
ps -aux 全部进程 a当前终端关联的所有进程,u详细内容信息,x显示非终端(系统)下所有进程,centos风格;
ps -ef 跟aux差不多 -e显示所有进程;-f显示完整格式输出 是linux分格;
进程下加方括号是内核态的进程,没有括号是用户态进程
PPID: 该进程的父进程的 ID; PID: 该进程的 ID;
VSZ进程占用的虚拟内存;RSS占用的物理内存; STAT进程状态;START进程启动的时间;TIME使用cpu时间
COMMAND该命令的实际指令,即进程的名字;
STAT目前的状态,分为五种:R正在运行;S可中断 睡眠中;T正在侦测或者停止; Z僵尸;D不可中断
五个基本状态后可加字母:<运行在高优先级;N低优先级;L锁定在内存中;l多线程;+进程运行在前台;
小写s控制线程
僵尸进程:父进程退出了,子进程没有退出,那么子进程就没有人管理了,就是僵尸进程
僵尸进程一般是重启, 几个没有关系,几百个需要重启。
ctrl-c 是发送 SIGINT 信号,终止一个进程
ctrl+z 是发送 SIGSTOP 信号,挂起一个进程 。 将作业放置到后台( 暂停) 前台进程收到这些信号,
就会采取相应动作 19信号 中端任务,挂起,随时可以唤醒;fg 1 恢复序号为1的;
fg 将后台中的命令调至前台继续运行; bg 将一个在后台暂停的命令,变成继续执行;
jobs 查看当前有多少在后台运行的进程.它是一个作业控制命令 ;
jobs 查看 fg 1(进程号)从后台调到前台,恢复挂起的;
ctrl-d 表示退出当前 shell
uptime 查看cpu负载的工具:第一个是当前时间;up 20days 系统运行时间20天;2user登陆用户数;
load....系统负载,及任务队列平均长度,三个平均值分别为1分钟,5分钟,15分钟前到现在的平局值
如果cpu为1核 ,1分钟的load值大约等于3负载过高,如果4核大约等于12则过高,这个是经验值
top:第一行和uptime显示内容一样;
第二行:us是用户使用,sy系统使用,ni调优;id空闲;wa等候占比,占用比较大(26.5)则是磁盘性能问题;
内存行:Mem物理内存总量;used使用的物理内存;free空闲内存总量;buff/cache用作内核缓存的内存量
Swap交换分区;
下列行:PID进程id;USER进程所有者的用户名;PR优先级 ;VIRT虚拟内存;RES实际使用内存;
SHR共享内存;S状态;%CPU上次更新到现在的 CPU 时间占用百分比;
%MEM 进程使用的物理内存百分比;TIME+进程使用的 CPU 时间总计,单位 1/100 秒;
COMMAND命令名/命令行;
top中的NI值为进程优先级, 负值优先级高(占用cpu资源打),正值优先级低,-19到20范围
进程的优先级管理:优先级取值范围为(-20,19),值越小优先级越高, 默认优先级是 0
renice -n 0 11327 修改优先级为0; nice -n 5 vim a.txt 指定运行 vim 的优先级为 5;
dd 可以生产制定大小的文件;
top 注意僵死和停止两个统计:
top快捷键 默认3s刷新一次;按空格立即刷新,按 s 修改刷新时间;q退出;按数字键1显示几个cpu;
u查看某个用户:输入mk h:帮助
top -p 9667 查看某个进程的动态信息,也可以输入进行名称;
T 按时间排序;
P – 以 CPU 占用率大小的顺序排列进程列表
M – 以内存占用率大小的顺序排列进程列表
N – 以 PID 的大小的顺序排列表示进程列表
s – 改变画面更新频率 输入1 即为每一秒刷新一次
l – 关闭或开启第一部分第一行 top 信息的表示
t – 关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示
m – 关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示
h – 显示帮助;n – 设置在进程列表所显示进程的数量