xxxxxxxxxx# ip a //查看IP# ifup ens33 //启动网卡,临时获取一个IP
xxxxxxxxxx快捷键操作tab键 //补全命令或者补全文件路径ctrl + c //结束命令ctrl + l //清屏ctrl + a //定义命令的光标到首行
xxxxxxxxxx命令 【空格】选项 【空格】 文件/目录//选项可有可无,但是选项不同,命令的功能也不同命令帮助:--helpman //按q退出# touch --help# man touch
xxxxxxxxxxWindows: 多根方式 C: D:Linux: 单根 /
xxxxxxxxxxbin 存放命令 - 普通用户的命令boot linux启动内核文件dev 存放设备etc 存放系统配置文件home 存放普通用户的家目录root 超级管理员root的家sbin 存放命令 - 管理员用户的命令tmp 临时目录var 动态信息,内存,进程
xxxxxxxxxx绝对路径: 以根 / 开始相对路径: 相对当前目录开始
怎么去切换目录:
xxxxxxxxxx# cd //切换目录. //当前目录.. //上一级目录
练习: 切换目录操作
xxxxxxxxxx# mkdir -p /{a/e/f/g,b/{h,j},c}1、请使用绝对路径切换到目录g cd /a/e/f/g2、请使用相对路径切换到a cd ../../..3、请使用绝对路径切换到c cd /c4、请使用相对路径切换到b cd ../b5、请使用相对路径切换到h cd ./h ~ cd h
xxxxxxxxxx# yum install tree -y //安装tree命令# tree /a /b /c/a└── e└── f└── g/b├── h└── j/c5 directories, 0 files
xxxxxxxxxx文件增删改查增:touch //创建文件# touch a.txt删:rm //删除-r //删除目录-f //强制删除,非交互# rm -rf a.txt改:mv //移动和改名cp //复制vi/vim //编辑文件内容# touch a.txt# mv a.txt b.txt //把a.txt改名为b.txt# mv b.txt /tmp/ //把b.txt移动到/tmp目录下# cp a.txt b.txt //复制a.txt为b.txt查:cat //查看所有内容-n //加上行号head //默认是查看文件的前10行tail //默认是查看文件的后10行目录增删改查增:mkdir //创建目录-p //创建联级目录-v //显示创建过程删:rm //删除-r //删除目录一定要加上该选项改:mv //移动和改名cp //复制-r //复制目录一定要加上-r的选项查:ls //列出目录有哪些内容-l //以长格式显示-a //显示隐藏文件-d //配合-l 去查看目录本身信息以长格式显示# ls -l 等于 ll(开头第一个符号的含义)d 目录- 文件l 链接文件b 设备文件
xxxxxxxxxx# yum install vim -y //最小化系统,默认没有vim命令
三种模式
命令模式--编辑模式--尾行模式
xxxxxxxxxx命令模式:1、光标定位0 //光标定位到该行的行首$ //光标定位到该行的行尾gg //光标定位到第一行的行首G //光标定位到最后一行的行首5gg ~ 5G //把光标定位到第5行的行首2、内容处理(以行为单位)yy //复制光标所在行2yy //复制2行,包括光标所在行p //粘贴,粘贴到光标所在的下一行dd //删除,删除光标所在行3dd //删除3行,包含光标所在行往下u //撤销ctrl + r //反撤销3、高亮关键字/关键字按n往下翻,按N往上翻
xxxxxxxxxx编辑模式:按i进入编辑模式 - 从光标的前面开始插入内容按a进入编辑模式 - 从光标的后面开始插入内容按o进入编辑模式 - 另起一行开始插入
xxxxxxxxxx尾行模式::wq //保存退出 :x shift+zz:q //不保存退出加上 ! 代表强制1、替换修改内容:1 s/root/ROOT/g //替换第一行里面所有的root为 ROOT:1,5 s/root/ROOT/ //替换1到5行里面出来的第一个root为ROOT:% s/root/ROOT/g //替换所有行里面出现所有root为ROOT(匹配的内容支持正则匹配):% s/[0-9]//g //删除所有行里面的数字,替换为空=删除2、功能: set number //添加行号: set list //列出所有字符
xxxxxxxxxx可视块模式:批量添加:ctrl + v -> 方向键选中块 -> 大写的i (shift + i) -> 输入添加的内容 -> Esc Esc键批量删除:ctrl + v -> 方向键选中块 -> d 或者 x 进行删除shift + v //可视行v //可视 (不规则)
========================================================
xxxxxxxxxxUsers and groups:. Every process (running program) on the system runs as a particular user.系统上的每个进程(运行的程序)都是作为特定用户运行的. Every file is owned by a particular user.每个文件是由一个特定的用户拥有. Access to files and directories are restricted by user.访问文件和目录受到用户的限制. The user associated with a running process determines the files and directories accessible to that process.与正在运行的进程相关联的用户确定该进程可访问的文件和目录
怎么去查看用户信息
xxxxxxxxxx# id 用户名-u //打印用户的UID-g //打印用户的GID-G //打印出用户所有组的GID
xxxxxxxxxxcentos7管理员用户ID 0系统用户ID 1~999普通用户 1000~centos6管理员用户ID 0系统用户ID 1~499普通用户 500~
用户和组相关的文件
xxxxxxxxxx/etc/passwd //存放用户信息# head -1 /etc/passwdroot:x:0:0:root:/root:/bin/bash用户名:密码位:UID:GID:用户解释:用户家目录:登入shell/etc/group //存放组信息# head -1 /etc/grouproot:x:0:组名:密码位:GID:/etc/shadow //存放密码信息/etc/skel //存放家目录结构/var/spool/mail/用户名 //存放用户的邮件信息
如何去创建用户?
xxxxxxxxxx# useradd 用户名选项-u //指定UID-d //指定家目录-M //不创建家目录-g //指定创建的基本组ID或者组名称-G //指定创建用户的附加组-s //指定用户登入的shell, 默认是/bin/bash 允许登入, /sbin/nologin 不允许登入【创建用户时候,会默认创建同名的基本组】案例:1、要求创建一个UID为888的用户叫boss# useradd -u 888 boss2、要求给财务qiangge创建一个UID为666,并且家目录在/qiangge# useradd -u 666 -d /qiangge qiangge3、要求创建一个用户nginx,只作为系统管理用户,不允许登入并且没有家目录# useradd -u 889 -s /sbin/nologin -M nginx4、要求创建一个用户jerry,它的附加组为IT# useradd -G IT jerry
如何去创建组?
xxxxxxxxxx# groupadd 组名选项-g //指定UID案例:1、创建一个GID为999的组IT# groupadd -g 889 IT
考虑问题?
如果useradd命令失效了,要求创建一个用户rng,它的UID为8888,它的基本组为RNG,家目录为/rng,并且允许登入?
xxxxxxxxxx# vim /etc/groupRNG:x:8888:# vim /etc/passwdrng:x:8888:8888:rng:/rng:/bin/bash# cp -r /etc/skel/ /rng
如何去删除用户?
xxxxxxxxxx# userdel 用户名选项-r //删除干净,邮件、家目录等等
如何去删除组?
xxxxxxxxxx# groupdel 组名【注意:如果组作为用户的基本组,不可被删除】
如何进行组成员管理?
【用户一定要是已经存在的】
xxxxxxxxxx# usermod 选项 用户名选项-g //更换基本组-G //更换附加组-aG //添加新的附加组# gpasswd 选项 组名选项-a //给组添加用户 ~ usermod -aG-d //从组里删除用户-M //给组批量去添加用户
如何切换用户?
xxxxxxxxxx# su - 普通用户 //切换用户,也叫做完成切换# su 普通用户 //不会切换家目录,环境没有完全切换# exit //退出登入
如何去给用户设置密码?
xxxxxxxxxx【root用户切换到普通用户,不需要密码;普通用户之间切换需要密码】# passwd 用户名 //交互式修改密码# echo 密码 | passwd --stdin 用户名 //非交互式修改用户密码
如何给普通用户提权?
xxxxxxxxxx1、把普通用户添加到wheel组# usermod -aG wheel 普通用户2、修改配置文件 /etc/sudoers# vim /etc/sudoers (添加以下内容)普通用户 ALL=(ALL) ALL
基本权限UGO
ACL权限
高级权限 SUID SGID SKITY
特殊权限 chattr
文件权限设置: 可以赋于某个用户或组 能够以何种方式 访问某个文件
权限对象
xxxxxxxxxx属主 - U (user)属组 - G (group)其他人 - O (other)
基本权限类型
xxxxxxxxxxr - 可读 (4)w - 可写 (2)x - 可执行 (1)
怎么去查看文件或者目录对应的属主和属组的权限?
xxxxxxxxxx# ls -l a.txt-rw-r--r--. 1 root root 0 5月 9 22:32 a.txt分析:属主root -> rw-属组root -> r--其他人 -> r--
xxxxxxxxxx# chmod 选项 文件/目录选项-R //递归修改-对目录生效1、通过字母去设置对象 赋值符 权限类型u + rchmod g - w file1o = xa案例1、要求修改a.txt的属主权限为-w-# chmod u-r a.txt2、要求修改a.txt的属组权限为rw-# chmod g+w a.txt3、要求给a.txt文件加上可执行权限# chmod a+x a.txt2、通过数字的方式设置# ls -l a.txt-rw-r--r--. 1 root root 0 5月 9 22:32 a.txt权限用数字表示: 644案例1、修改a.txt的权限为 rwx rw- --x# chmod 761 a.txt
xxxxxxxxxx# chown 选项 文件/目录选项-R //递归修改-对目录生效案例1、要求修改a.txt文件的属主为jerry ?# chown jerry a.txt2、要求修改a.txt文件的属主为rng 属组为IT ?# chown rng:IT a.txt# chown rng.IT a.txt3、要求修改a.txt文件的属组为WEB ?# chown .WEB a.txt
【如果要分析用户对文件拥有哪些权限,一定要先考虑用户是否对文件所在的目录拥有x权限】
umask掩码计算
xxxxxxxxxx默认的UMASK 022计算过程文件权限 666 rw- rw- rw-umask 022 --- -w- -w-rw- r-- r--最后创建的文件 644目录权限 777 rwx rwx rwxumask 022 --- -w- -w-rwx r-x r-x最后创建的文件 755设置umask# umask 055
xxxxxxxxxx设置单独用户和组对于单个文件的具体rwx基础权限# setfacl选项-m //添加acl权限-x //删除acl权限-b //删除所有的acl权限案例1、给tom用户设置对a.txt有rw的权限# setfacl -m u:tom:rw a.txt2、给IT组设置对a.txt有rx权限# setfacl -m g:IT:rx a.txt3、删除tom用户给a.txt 设置的acl权限# setfacl -x u:tom a.txt4、删除a.txt文件上的所有acl权限# setfacl -b a.txt# getfacl /zabbix/ //查看文件或者目录的acl权限getfacl: Removing leading '/' from absolute path names# file: zabbix/ #文件名称# owner: zabbix #属主# group: nagcmd #属组user::rwx #属主权限user:tomcat:r-x #tomcat的acl权限group::r-x #属组权限mask::r-xother::--- #其他人权限问题:不小心操作 chmod a-x /usr/bin/chmod ? 怎么恢复 ?方法1:# setfacl -m u:root:rwx /usr/bin/chmod# chmod a+x /usr/bin/chmod方法2:# cp /usr/bin/cat /usr/bin/cat.bak# cp /usr/bin/chmod /usr/bin/cat.bak //按y进行覆盖# cat.bak a+x /usr/bin/chmod
xxxxxxxxxxSUID给可执行文件设置suid权限,“类似给单个命令进行提权”# chmod u+s# chmod 4000案例:给whoami命令进行单独提权# chmod u+s /usr/bin/whoami# whoami //显示当然登入的用户是root# su - zabbix$ whoamiroot //由于whoami被root用户赋予suid权限,所以相当于现在执行whoami命令还是root本身SGID给目录设置,任何用户在该目录下创建文件,会继承其属组【一定要有x权限存在】# chmod g+s 目录# chmod 2000 目录案例:配置一个目录,该目录任何用户都可以进行创建文件,但是自动修改文件的属组为IT# mkdir /test# groupadd IT# chown :IT /test# chmod g+s /testSKITY给目录设置,任何用户都不能随意删除其他用户创建的文件【一定要有x权限存在】案例创建目录,并按以下要求设置: /data 目录属于 IT 组 , 目录可以被 IT 的组成员读取、写入和访问,其他任何用户不具备这些权限(root 用户除外) 在/data 目录中创建的文件的所属组自动变成 IT 组# mkdir /data# chmod g=rwx /data# chmod o= /data# chown :IT /data# chmod g+s /data
xxxxxxxxxx对root用户生效# chattr +a file100 #只能给文件添加内容,但是不能删除内容 //日志文件# chattr +i file200 #文件不能更改,不能删除,不能移动# lsattr file300 #查看特殊权限
xxxxxxxxxx【将前面命令的标准输出 传递给管道,作为后面命令的标准输入】案例1、打印出/etc/passwd文件的第5行# head -5 /etc/passwd | tail -1
xxxxxxxxxx# find 查找路径 查找条件选项【查找条件】-name //文件名称,支持通配符-type //文件类型 f 普通文件 b 设备 d 目录 l 链接文-size //文件大小 【+-】【KMG】-group //组名-user //用户名-empty //空文件或者目录-mtime //根据n天前修改内容的文件多条件查找:【默认是and ,需要满足两个条件】# find 目录 条件1 条件2【or 或,只需要满足其中一个条件】# find 目录 条件1 -o 条件2【! 非,不满足条件】# find 目录 ! 条件1查找后的处理-ok //进行交互式,会询问-exec //直接处理# find 查找路径 查找条件 -exec 处理动作 {} \; //{}代表前面查找的内容, \; 代表命令结束案例1、查找系统内以 .html 结尾的文件# find / -name "*.html"2、查找系统内文件大于5M的普通文件# find / -size +5M -type f3、拷贝系统内所有以.conf 结尾的文件到/tmp 目录# find / -name "*.conf" -exec cp {} /tmp \;
xxxxxxxxxx功能:打印出匹配到"关键字"的行写法:grep [选项] 关键字 文件模式:root //含有root的行^root //以root开头的行root$ //以root结尾的行^$ //空行选项:-i //忽略大小写-v //取反-n //带行号打印-q //不输出-c //统计匹配到的行的数量案例:1、在/etc/passwd 文件中过滤以root开头的行# grep "^root" /etc/passwd2、统计系统内不能正常登入的用户有几个?# grep -vc "bash$" /etc/passwd
xxxxxxxxxx功能:统计行数,字符数,单词数语法: wc [选项] 文件选项:-l //统计行数-c //统计字节数
xxxxxxxxxx功能: 将文件中的行进行排序后输出语法: sort [选项] 文件选项:-n //按照数值进行排序-r //逆序排序-t //指定字段分隔符-k //指定按照第几列排序
xxxxxxxxxx功能: 过滤掉连续重复的行语法: uniq [选项] 文件选项-c //统计相同的行的行数,行数写在最前面-i //不区分大小写-u //只打印不重复的行
xxxxxxxxxx功能:打印列语法:cut 选项 文件选项:-d //指定分隔符-f //指定需要打印的字段(列)
xxxxxxxxxx功能: 从标准输入中去替换、缩减或删除字符,并将结果写到标准输出语法:tr [选项] set1 [set2]选项:-d //删除set1中所有的字符-s //如果只有set1,将set1中的连续字符缩减为1个;如果有set1和set2则将set1中的字符缩减后替换成set2-t //将set1中的字符对应替换成set2中的字符(set1中的字符不要重复)
xxxxxxxxxx功能:将从标准输入中读取到的内容同时写入到标准输出和文件中语法:tee [选项] 文件选项:-a //追加到文件中,默认是覆盖
xxxxxxxxxx功能:将从标准输入中接收到的内容(以空格分隔)传递给后面的命令作为其参数案例:参数以空格隔开# echo "tom jerry"tom jerry# echo "tom jerry" | xargs -n1 iduid=8889(tom) gid=8892(tom) 组=8892(tom),8890(WEB)uid=1001(jerry) gid=8890(WEB) 组=8890(WEB),10(wheel)参数以换行隔开# cat a.txt123.txt123.html123.py# cat a.txt | xargs -I {} touch {}# ls123.html 123.py 123.txt
xxxxxxxxxxziptar//.rar -- windows专属压缩的好处1、节省磁盘空间2、节省网络带宽,加快传输速度unzip压缩:【压缩后原文件不会消失,压缩包的后缀.zip】# yum install zip -y //安装压缩命令语法: zip [选项] 压缩包名 需要压缩文件列表选项-r //压缩目录解压:# yum install unzip -y //安装解压命令语法:unzip 压缩包名选项-d //解压到哪,一般后面接目录tar功能: 即可打包,也可压缩打包: 只是归档,文件的大小不会发生改变压缩: 压缩后文件的大小会发生改变(可能会导致文件损坏)打包/压缩语法:# tar 选项 包名 文件列表解包/解压语法:# tar 选项 包名 文件列表选项:-c //创建归档-x //解压-f //后接包名,必须选项-t //查询包中有哪些文件-r //往包中追加文件,不适用压缩包-z //通过gzip压缩 xxx.tar.gz-j //通过bzip2压缩 xxx.tar.bz2 //yum install bzip2 -y 需要安装该程序-J //通过xz压缩 xxx.tar.xz-a //通过压缩包后缀,自动选择程序进行压缩-C //解压时,指定解压目录案例:1、将/tmp 目录压缩为 tmp.tar.gz# tar caf tmp.tar.gz /tmp2、将tmp.tar.gz 解压到 /usr/local/# tar xf tmp.tar.gz -C /usr/local/
####了解进程状态/生命周期
什么是进程?
进程的状态?
进程的生命周期?
xxxxxxxxxx[bavduer@system_manager ~]$ sudo yum -y install psmisc htop atop net-tools##查看特定进程的信息,静态 <top可以动态查看进程的信息>[bavduer@system_manager ~]$ sudo ps aux | grep sshd ---(10000🌟)查看指定进程的静态信息USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 6775 0.0 0.4 112756 4320 ? Ss 11:13 0:00 /usr/sbin/sshd -Droot 18950 0.0 0.6 161360 6144 ? Ss 17:12 0:00 sshd: bavduer [priv]bavduer 18952 0.0 0.2 161360 2348 ? S 17:12 0:00 sshd: bavduer@pts/0bavduer 19057 0.0 0.0 112724 988 pts/0 S+ 18:09 0:00 grep --color=auto sshdaux: -ax: 显示所有进程的pid、tty、cmd、cpu占用总时间 -u: 显示用户列表中的所有硬件使用信息grep: 可以用来过滤特定字符或特定程序名 grep "string字符串" USER: 运行进程的用户 PID: 子进程ID -- ppid父进程ID %CPU: CPU占用率 %MEM: 内存占用率memory VSZ: 占用虚拟内存 RSS: 占用实际内存 驻留内存 TTY: 进程运行的终端 STAT: 进程状态 man ps (/STATE) R 运行 S 可中断睡眠 Sleep D 不可中断睡眠 (usually IO) T 停止的进程/暂停⏸️ Z 僵尸进程 X 死掉的进程【了解 】 Ss s进程的领导者,父进程 S< 优先级较高的进程 SN N优先级较低的进程 R+ +表示是前台的进程组 Sl 以线程的方式运行 START: 进程启动时的时间 TIME: 进程占用CPU的总时间 COMMAND: 进程文件,进程名 [bavduer@system_manager ~]$ sudo ss -anptu | grep sshd (10000🌟)Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp LISTEN 0 128 *:22 *:* users:(("sshd",pid=6775,fd=3))tcp LISTEN 0 128 :::22 :::* users:(("sshd",pid=6775,fd=4)) Netid: 网络连接协议 State: 监听状态 Recv-Q: 网络接收队列 Send-Q: 网络发送队列 Local Address:Port: 本地地址:端口号 Peer Address:Port: 远端地址:端口号[bavduer@system_manager ~]$ sudo netstat -anptu | grep sshd (10000🌟)Proto Recv-Q Send-Q Local Address Foreign Address Statetcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6775/sshdtcp 0 0 192.168.161.100:22 192.168.161.1:53983 ESTABLISHED 18950/sshd: bavduertcp6 0 0 :::22 :::* LISTEN 6775/sshdRecv-Q Send-Q分别表示网络接收队列、发送队列. Q是Queue的缩写.这两个值通常应该为0,如果不为0可能是有问题的##pstree查看进程树[bavduer@system_manager ~]$ sudo pstreesystemd─┬─NetworkManager───2*[{NetworkManager}] ├─agetty ├─auditd───{auditd} ├─crond ├─dbus-daemon ├─lvmetad ├─master─┬─pickup │ └─qmgr ├─polkitd───6*[{polkitd}] ├─rsyslogd───2*[{rsyslogd}] ├─sshd───sshd───sshd───bash───pstree ├─systemd-journal ├─systemd-logind ├─systemd-udevd └─tuned───4*[{tuned}] [bavduer@system_manager ~]$ sudo pstree -psystemd(1)─┬─NetworkManager(5987)─┬─{NetworkManager}(6117) │ └─{NetworkManager}(6151) ├─agetty(6040) ├─auditd(5320)───{auditd}(5327) ├─crond(6000) ├─dbus-daemon(5924) ├─lvmetad(3135) ├─master(6954)─┬─pickup(19038) │ └─qmgr(6960) ├─polkitd(5897)─┬─{polkitd}(5979) │ ├─{polkitd}(5994) │ ├─{polkitd}(5999) │ ├─{polkitd}(6010) │ ├─{polkitd}(6013) │ └─{polkitd}(6033) ├─rsyslogd(6776)─┬─{rsyslogd}(6808) │ └─{rsyslogd}(6811) ├─sshd(6775)───sshd(18950)───sshd(18952)───bash(18953)───pstree(19265) ├─systemd-journal(3115) ├─systemd-logind(5916) ├─systemd-udevd(3139) └─tuned(6777)─┬─{tuned}(7060) ├─{tuned}(7061) ├─{tuned}(7062) └─{tuned}(7076) ##pgrep查看特定进程的pid号, 常常与kill联合使用, 杀死问题进程 -l 同时显示进程名和PID -o 当匹配多个进程时,显示进程号最小的那个 -n 当匹配多个进程时,显示进程号最大的那个[bavduer@system_manager ~]$ sudo pgrep sshd --服务名或者命令名67751895018952[bavduer@system_manager ~]$ sudo pgrep -l sshd6775 sshdtingnfjangj18950 sshd18952 sshd[bavduer@system_manager ~]$ sudo pgrep -o sshd ---显示最高的父进程6775[bavduer@system_manager ~]$ sudo pgrep -n sshd ---显示最低的子进程18952top动态查看进程信息
htop动态查看进程信息
xxxxxxxxxx 1) SIGHUP 重新加载配置 2) SIGINT 键盘中断 ^C 3) SIGQUIT 键盘退出 9) SIGKILL 强制终止 15) SIGTERM 终止(正常结束),缺省信号 18) SIGCONT 继续 19) SIGSTOP 停止 20) SIGTSTP 暂停^ZxxxxxxxxxxA. kill案例1: 杀死vim进程<****** 9信号15信号>[root@system_manager ~]# ps aux | grep vimroot 5594 0.1 0.2 151492 5120 pts/0 S+ 11:37 0:00 vim /root/b.txtroot 5609 0.0 0.0 112720 984 pts/1 S+ 11:37 0:00 grep --color=auto vim[root@system_manager ~]# kill 5594[root@system_manager ~]# ps aux | grep vimroot 5657 0.0 0.0 112720 984 pts/1 S+ 11:38 0:00 grep --color=auto vimB. kill案例2: 杀死远程sshd连接[root@system_manager ~]# ps aux | grep sshdroot 1162 0.0 0.2 112796 4296 ? Ss 10:59 0:00 /usr/sbin/sshd -Droot 3665 0.0 0.2 160884 5716 ? Ss 11:01 0:00 sshd: root@pts/1root 5764 0.0 0.0 112708 972 pts/0 S+ 11:40 0:00 grep --color=auto sshd[root@system_manager ~]# kill -9 1162[root@system_manager ~]# ps aux | grep sshdroot 3665 0.0 0.2 160884 5716 ? Ss 11:01 0:00 sshd: root@pts/1root 5795 0.0 0.0 112708 972 pts/0 S+ 11:40 0:00 grep --color=auto sshd[root@system_manager ~]# kill -9 3665c.killall案例:[root@system_manager ~]# ps aux | grep vimroot 6000 0.0 0.2 151568 5232 pts/0 S+ 11:43 0:00 vim file1.txtroot 6052 0.0 0.2 151564 5224 pts/1 S+ 11:44 0:00 vim file2.txtroot 6281 0.0 0.0 112720 980 pts/3 S+ 11:46 0:00 grep --color=auto vim[root@system_manager ~]# killall vim[root@system_manager ~]# ps aux | grep vimroot 6313 0.0 0.0 112720 980 pts/3 S+ 11:46 0:00 grep --color=auto vimd.pkill案例:[root@system_manager ~]# w 17:29:06 up 21 min, 4 users, load average: 0.00, 0.03, 0.10USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot :0 :0 107月18 ?xdm? 28.49s 0.26s /usr/libexec/gnome-session-binary --sessioroot pts/0 10.18.41.54 17:18 1:54 0.04s 0.04s -bashroot pts/1 10.18.41.54 17:10 1:46 0.06s 0.06s -bashroot pts/2 10.18.41.54 17:11 2.00s 0.12s 0.01s w[root@system_manager ~]# pkill -9 -t pts/0[root@system_manager ~]# w 17:29:35 up 22 min, 3 users, load average: 0.00, 0.03, 0.10USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATroot :0 :0 107月18 ?xdm? 28.43s 0.26s /usr/libexec/gnome-session-binary --sessioroot pts/1 10.18.41.54 17:10 2:15 0.06s 0.06s -bashroot pts/2 10.18.41.54 17:11 7.00s 0.13s 0.02s w
xxxxxxxxxx1、前台运行: # firefox 192.168.1.250 会发现该程序一直占用终端,其他命令不能够再在这个终端运行2、后台运行 1)命令执行的时候,直接将其放置于后台运行 # firefox 192.168.1.250 & [1] 6222 后台运行不会占用执行命令的终端,用户仍然可以使用这个终端做操作 2)对于一个已经运行的命令,如何将其放置于后台 ctrl+z # firefox 192.168.1.250 [1] Done firefox 192.168.1.250 [2]+ Stopped firefox 192.168.1.250 ctrl+z将前台进程放置于后台,但是该进程在后台是停止的状态 # jobs //查看后台进程运行状态 [2]+ Stopped firefox 192.168.1.250 # bg 2 //激活后台进程 [2]+ firefox 192.168.1.250 & # jobs [2]+ Running firefox 192.168.1.250 & bg 任务编号 : 指定任务在后台运行 fg 任务编号 : 将后台运行的命令变成前台运行 # fg 2 firefox 192.168.1.250注意:不管你是前台运行,还是后台运行,只要终端一关闭,进程就停止了。那么如何让一个命令或者程序脱离终端? 使用nohup命令。 # nohup firefox 192.168.1.250 & [1] 6537 # nohup: ignoring input and appending output to `nohup.out' //按回车 xxxxxxxxxx谦让值:nice作用:指定或者调整用户进程的nice值nice值越高,该进程抢占资源的能力越弱nice值越低,该进程抢占资源的能力越强范围:-20~19相关命令nice -- 运行时直接设置nice值用法: nice -n 数字 commandrenice -- 对于已经运行的,调整nice值用法: renice 数字 PID
在Linux中,不同的发行版软件管理的方式可能不一样,具体来说,主要分为两大派:
RPM: Rpm Package Manager
CentOS系统软件安装三种方式
xxxxxxxxxxrpm:安装简单,可定制性差,一台机器上不能装多个相同的软件,稳定性高源码包编译安装:安装复杂,可定制性好,一台机器上可安装多个相同的软件二进制包:安装简单,可定制性差,一台机器可安装多个相同的软件,稳定性较高
怎样获取rpm包
xxxxxxxxxx在网络上下载rpm包: http://rpmfind.net/ //下载不常见的rpm包网络yum源中获取 //基础源CentOS,扩展源epel镜像中获取:在光盘镜像sr0中的Packages目录下
怎样查看光盘的内容
xxxxxxxxxx1.将光盘连接上2.将光盘挂载到相应的挂载点# mount /dev/sr0 /mnt3.通过挂载点访问光盘内容# ls /mnt
rpm包介绍
xxxxxxxxxxzsh-5.8.2-25.el7.x86_64.rpm 包全名zsh 包名5.8.2:主版本号.次版本号.源程序的发行号25: rpm发行号el7:平台一般来说,不同平台的包不兼容x86_64:架构x86_64: 64位i686: 32位noarch:通用
RPM包管理
rpm工具
xxxxxxxxxx安装# rpm -ivh 包全名 //安装软件包# rpm -Uvh 包全名 //升级安装包,如果本来没有安装,则安装卸载# rpm -e 包名--nodeps //只卸载当前软件,不检查依赖关系查询查询已安装的:查询指定软件包有没有安装: # rpm -q包名查询所有已安装的软件包: # rpm -qa //可以配合grep命令查询已安装的软件包安装的所有文件: # rpm -ql 包名查询已安装的软件包安装的配置文件: # rpm -qc 包名通过文件名反查文件是由哪个包安装的: # rpm -qf文件的绝对路径查询未安装的:查询未安装的软件包将会安装的所有文件: # rpm -qpl 包全名查询未安装的软件包将会安装的配置文件: # rpm -qpc 包全名扩展:``反引:等价于$(),引用命令的输出结果,``内部一定是命令例:#rpm -qf `which useradd`shadow-utils-4.1.5.1-24.el7.x86_64# rpm -qf $(which useradd)shadow-utils-4.1.5.1-24.el7.x86_64
xxxxxxxxxxrpm包无法自动解决依赖性问题,需要手动解决,非常麻烦..yum可以解决软件包之间的依赖问题
YUM工具
yum仓库
xxxxxxxxxx1.多个rpm包2.记录这些包及包之间的依赖关系- repodata目录
配置yum源
本地源
xxxxxxxxxx要使用yum仓库,需要先进行配置主配置文件:/etc/yum.conf[root@localhost mnt]# tail -2 letc/yum.conf# PUT YOUR REPOS HERE OR IN separate files named file.repo# in /etc/yum.repos.d//仓库可以定义在这里或/etc/yum.repos.d目录下以.repo结尾的单独的文件中
xxxxxxxxxx实验:配置本地yum仓库配置过程:1、将系统光盘sr0挂载到/mnt2、关闭或者备份其他仓库# cd /etc/yum.repos.d/# mkdir repo# mv *.repo repo/3、创建yum配置文件# vim local.repo[local] //仓库IDname=local disk //仓库名称(描述)baseurl=file://mnt //仓库的URl 或者来源enabled=1 //开关,0为关 1为开gpgcheck=0 //秘钥是否检查4、检验# yum repolist【注意编写yum源文件】1、一定要写在/etc/yum.repos.d/目录下2、一定要以.repo 结尾,否则不生效
网络源
常用的网络源:centos官方源,epel源
国外源下载比较慢,建议使用国内镜像源:如阿里云,清华大学,网易... 直接搜索xxx开源镜像站
xxxxxxxxxx例如:# cat /etcyum.repos.d/base.repo[base]name=centos http basebaseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/enabled=1gpgcheck=0# cat /etc/yum.repos.d/epel.repo[epel]name=centos http epelbaseurl=https://mirrors.aliyun.com/epel/7/x86_64/enabled=1gpgcheck=0或者通过阿里云镜像站给的命令:# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
YUM命令的使用
xxxxxxxxxx清理yum缓存:# yum clean all缓存软件包信息:提高搜索/安装软件的速度# yum makecache查询yum源信息:# yum repolist查找软件:# yum search mysql此命令会搜索到系统已经安装和yum源里没有安装的软件信息,可以用他简单测试yum是否好用查看软件依赖性关系:# yum deplist httpd查看文件属于哪个软件# yum provides rz查看系统已经安装好的软件和没有安装的软件(源里存在即可查到):# yum list查看系统已经安装好的软件组和没有安装的软件组(源里存在即可查到):# yum grouplist查看软件组包含的具体软件:# yum groupinfo安装软件组:# yum groupinstall ‘软件组名称’如果软件或者软件组名称内有空格,要给空格转义或者加引号安装软件:# yum install 软件名称# yum install mysql mysql-server -y //-y跳过确认提示直接安装重装:# yum reinstall 软件名卸载软件:# yum erase mysql-server# yum remove mysql-server# yum -y remove mysql-server打开Yum缓存功能:安装完软件之后,软件不会被删除(默认安装完之后,不会保留安装包)# vim /etc/yum.conf 修改下面参数的值为1,软件会被保存到cachedir指定的目录下keepcache=1自己制作yum源#mkdir /myyum把想用yum安装的软件包拷贝到目录下#createrepo /myyum //此目录就可以作为yum源了。