【Linux基础】Linux基础命令上文章目录基础命令filelnstatwhich / whereisfindzip / unzipgziptar重定向wgetcurlrpmyumip a / ifconfigps / topkill / killall / pstree / pkill / jobssystemctlnetstat / ss / lsofuseradd / usermod / userdelgroupadd / groupmod / groupdel / newgrpchmod / chown基础命令file查看文件类型file 文件名普通文件类型 ASCII text 纯文本文件 ELF64-bit LSB executable 二进制文件可执行文件#file /bin/catdata 数据文件#file /var/log/wtmp目录文件类型 directory 目录 链接文件 symboliclinkto sr0file/dev/cdrom 套接字文件 socketfile/dev/log 块设备文件比如磁盘光驱u盘 block specialfile/dev/sr0 字符设备文件键盘鼠标 character specialfile/dev/tty18ln创建文件的软硬链接ln-s原地址 目标地址#创建软链接ln原地址 目标地址#创建硬链接这里的源文件和软链接不在一个目录下时要使用绝对路径否则软链接失效stat查看时间状态等详细信息[rootshacofun ~]# stat test.txtFile: ‘test.txt’ Size:37Blocks:8IO Block:4096regularfileDevice: fd01h/64769d Inode:4197812Links:1Access:(0644/-rw-r--r--)Uid:(0/ root)Gid:(0/ root)Access:2020-12-17 09:56:03.617642308 0800 Modify:2020-12-17 09:56:03.617642308 0800 Change:2020-12-17 09:56:03.620642304 0800 Birth: - Access 访问时间 Modify 修改时间 Change 状态修改时间stat-c%a 文件名 以数字的方式显示文件的权限[rootshacofun ~]# stat -c %a dir1777which / whereis查看命令路径[rootshacofun ~]# which cpaliascpcp -i/usr/bin/cp[rootshacofun ~]# whereis cpcp: /usr/bin/cp /usr/share/man/man1/cp.1.gzfind查找文件find 路径 选项 参数-name按照文件名查找文件-perm按照文件权限来查找文件。-user按照文件属主来查找文件。-group按照文件所属的组来查找文件。较少使用-mtime-nn 按照文件的更改时间来查找文件按24小时块取整 -n表示文件更改时间距现在n天以内【小于n】 n 表示文件更改时间距现在n天以前。【大于n】 n 刚好n 精确区间 不加符号[n×24h,(n1)×24h)【-mtime0距离现在0 ~24小时内被修改的文件-mtime1距离现在24 ~48小时之间被修改的文件-mtime2距离现在48 ~72小时之间 现在 ←────────────── 过去0~24h24~48h48~72h mtime0mtime1mtime2】-type查找某一类型的文件诸如 b - 块设备文件。 d - 目录。 c - 字符设备文件。 p - 管道文件。 l - 符号链接文件。 f - 普通文件。-size[-]size[ckMG]按文件大小查找支持使用或-表示大于或小于指定大小单位可以是c字节、kKB、MMB或GGB-maxdepthnum 最大深度限制 下面的几个和时间相关的参数用的不多了解就可以-aminn 查找系统中最后N分钟访问的文件-atime-n查找系统中最后n天内访问的文件-cmin-n查找系统中最后N分钟内被改变文件状态的文件-ctime-n查找系统中最后n天内被改变文件状态的文件-mmin-n查找在n分钟内被修改过的文件-mtime-n查找在n天内被修改过的文件-print默认就是这个参数把find命令查找到的文件输出到标准输出-delete直接删除-exec对查找到的文件执行参数后面所给出的shell命令-ok同-ok ,会多一个询问zip / unzip打包压缩命令 解压命令需下载zip / unzip命令zip包名 源文件#压缩文件-r递归压缩 uzip 包名#解压文件-d解压到指定路径-l查看压缩包里面的内容-t检查压缩包里面的文件是否完好#压缩[rootshacofun ~]# zip qwe.zip file1#解压[rootshacofun ~]# unzip qwe.zipArchive: qwe.zip replace file1?[y]es,[n]o,[A]ll,[N]one,[r]ename: 替换 不替换 替换所有 啥也不做 改名#压缩目录[rootshacofun tmp]# zip -r tmp_dir2.zip /tmp/gzip压缩解压-d解压gzip打包会删除源文件-r压缩目录目录下的文件#压缩[rootshacofun ~]# gzip file1#解压[rootshacofun ~]# gzip -d file1.gztar压缩工具-zcvf包名.tar.gz 源文件 打包压缩-zxvf包名.tar.gz 解压-C指定解压路径 或者直接-xf-tf包名.tar.gz 查看包里面内容v显示过程可省略不写 - 可省略不写#打包压缩[rootshacofun ~]# tar zcf qwe.tar.gz /etc#查看打包内容[rootshacofun ~]# tar tf qwe.tar.gz#解压[rootshacofun ~]# tar xf qwe.tar.gz重定向标准输出FD 1commandout.txtcommand1out.txtcommandout.txt标准错误FD 2command2err.txtcommand2err.txt正常 错误一起重定向commandall.log21commandall.log标准输入FD 0commandfilecommand0file[rootshacofun ~]# wc anaconda-ks.cfg511501585anaconda-ks.cfg[rootshacofun ~]# wc anaconda-ks.cfg511501585wca.txt → 输出行数 文件名wca.txt → 只输出数字 脚本里通常更想要“纯数据”command结束符 【输入来源Shell 中的文本】command0结束符 【输入来源Shell 中的文本】[rootshacofun ~]# cat EOFhelloworldEOF hello world 临时输入 在输出 可重定向到新的文件catEOFapp.conf 追加的话把换成catapp.txteof 追加的话把换成wget需要下载从外网下载文件至本地-b后台下载-O:指定下载的路径可以改名wget-O/etc/yum.repos.d/CentOSBase.repo http://mirrors.aliyun.com/repo/Centos-7.repocurl-o设置下载的文件名-O下载文件,文件名就是下载下来的文件名-I返回响应一般用于测试连接是否正常curl-o/etc/yum.repos.d/CentOSBase.repo http://mirrors.aliyun.com/repo/Centos-7.reporpmRPM包管理命令安装 -i:#安装-v:#详细信息-h:#安装进度--test:#测试是否能够安装成功--force:#强制重新安装--nodeps:#忽略依赖关系#仅测试是否能安装成功[rootshacofun Packages]# rpm -ivh tree-1.6.0-10.el7.x86_64.rpm --testPreparing...################################# [100%]#强制安装忽略依赖[rootshacofun Packages]# rpm -ivh --nodeps --force samba-client-4.8.3-4.el7.x86_64.rpmRPM包管理命令查询rpm-q#查看指定软件包是否安装rpm-qa#查看系统中已安装的所有RPM软件包列表rpm-qi#查看指定软件的详细信息rpm-ql#查询指定软件包所安装的目录、文件列表rpm-qc#查询指定软件包的配置文件rpm-qd#查询指定软件包的帮助文档rpm-qf#查询文件或目录属于哪个RPM软件rpm-q--scripts#查询rpm包安装前和安装后执行的脚本RPM包管理命令升级-U如果老版本不存在就全新安装如果存在有新版即升级-f老版本必须存在[rootshacofun ~]# rpm -Uvh /mnt/Packages/tree-1.6.0-10.el7.x86_64.rpmRPM包管理命令卸载 卸载包时需要先把依赖的包卸载掉如果依赖的包是系统所必须的那就不能卸载这个包否则会造成系统崩溃。 //先查询, 然后卸载[rootshacofun ~]# rpm -qa |grep sh[rootshacofun ~]# rpm -e zshyumyum实战命令 安装 yuminstall-y不交互安装 yum localinstall 安装本地的rpm 包并安装依赖 yum reinstall 重装 查询 yum list 查询所有的安装包 yum info 查看安装或未安装包的详细信息 更新 yum check-update 检查可以更新的包 yum update python-y更新python包尽量少把-y放前面 一不小心回车很危险非常危险更新所有包包括内核 yum update-y******忘记 删除 yum remove 删除rpm包 yum erase 删除rpm包 yum仓库相关命令 yum repolist 查看仓库中的所有rpm包数量 yum repolist all 查看启用的和没启用的仓库 yum-config-manager--enable 启用yum仓库 yum provides:查询你想要敲的命令属于哪个rpm包 yum缓存 yum clean all yum makecache yum包组相关命令 yumgroupslist yumgroupsinstallDevelopment tools#安装一整个组的软件yumgroupsremove-yBase yum历史相关命令 yumhistory#查看历史执行yum命令yumhistoryinfo N#查询历史执行yum命令ID详细信息yumhistoryundo N#撤销历史执行过的yum命令ip a / ifconfig查看IP地址ifconfig需要下载net-tools包ipaddress ----ip aifconfigipaddress show ens160 ---ip a show ens160ifconfigens160ps / top查看进程psaux a显示所有与终端相关的进程 u显示用户 x显示所有与终端无关的进程ps-eftopkill / killall / pstree / pkill / jobskill命令 -l查看所有进程信号[rootshacofun ~]# kill -l1)SIGHUP2)SIGINT3)SIGQUIT4)SIGILL5)SIGTRAP6)SIGABRT7)SIGBUS8)SIGFPE9)SIGKILL10)SIGUSR111)SIGSEGV12)SIGUSR213)SIGPIPE14)SIGALRM15)SIGTERM16)SIGSTKFLT17)SIGCHLD18)SIGCONT19)SIGSTOP20)SIGTSTP21)SIGTTIN22)SIGTTOU23)SIGURG24)SIGXCPU25)SIGXFSZ26)SIGVTALRM27)SIGPROF28)SIGWINCH29)SIGIO30)SIGPWR31)SIGSYS34)SIGRTMIN35)SIGRTMIN136)SIGRTMIN237)SIGRTMIN338)SIGRTMIN439)SIGRTMIN540)SIGRTMIN641)SIGRTMIN742)SIGRTMIN843)SIGRTMIN944)SIGRTMIN1045)SIGRTMIN1146)SIGRTMIN1247)SIGRTMIN1348)SIGRTMIN1449)SIGRTMIN1550)SIGRTMAX-1451)SIGRTMAX-1352)SIGRTMAX-1253)SIGRTMAX-1154)SIGRTMAX-1055)SIGRTMAX-956)SIGRTMAX-857)SIGRTMAX-758)SIGRTMAX-659)SIGRTMAX-560)SIGRTMAX-461)SIGRTMAX-362)SIGRTMAX-263)SIGRTMAX-164)SIGRTMAX 常用的[rootshacofun ~]# kill -1 32411重启PID为32411的进程[rootshacofun ~]# kill -9 32425强制终⽌PID为32425的进程[rootshacofun ~]# kill -15 32452相当于[rootshacofun ~]# kill 32452正常结束PID为32452的进程killall[选项][信号]进程名 按照进程名杀死进程 ①-i参数会询问是否要杀死某个进程 ②-I参数会忽略进程名的⼤⼩写[rootshacofun ~]# killall -9 httpdpstree[选项]以树状形式显示进程 -p表示显示进程的PIDpkill[选项][信号]进程名 按照进程名杀死进程-t 终端号按照终端号踢出⽤户 踢出⽤户[rootshacofun ~]# pkill -t -9 pts/1放在后台运行[rootshacofun ~]# cat [1]11825[rootshacofun ~]#如何查看[rootshacofun ~]# jobs[1] Stoppedcatjobs命令是一个阉割版本的ps只能查看当前shell运行的后台进程。systemctl列举出所有的unit 比如我们所有自定义的服务、系统服务都会在这个里面[rootshacofun ~]# systemctl list-units列举出所有的unit的状态[rootshacofun ~]# systemctl list-unit-files[rootshacofun ~]# systemctl list-units | grep sshdsshd.service loaded active running OpenSSH server daemon 返回当前服务是不是启动/开启自启 systemctl is-active/is-enabled NetworkManager 不开机自启 systemctl disable NetworkManagernetstat / ss / lsof查看端口号netstat 需要下载net-tools包netstat-antpss-antp-i显示网络接口信息-a显示全部端口信息-ttcp端口-uudp端口-l显示处于监听状态的LISTEN-p显示程序名-n不现实别名lsof-i:端口号useradd / usermod / userdeluseradd/ adduser 创建用户-u指定用户的uid,不能跟现有id冲突-g指定用户默认基本组-G指定用户附加组用逗号隔开添加多个附加组-d指定用户家目录-c指定用户的注释信息-M不建立家目录-s指定用户默认shell-r创建系统账户没有家目录-a配合-G追加附加组#创建shaco用户,指定UID5001,基本组students 附加组qwe,dba 注释信息one new user, 登陆的shell:/bin/bash[rootshacofun ~]# useradd -u 5001 -g students -G qwe,dba -c one new user -s /bin/bash shaco[rootshacofun ~]# tail -1 /etc/passwdshaco:x:5001:1001:one new user:/home/shaco:/bin/bash[rootshacofun~]# id shacouid5001(shaco)gid1001(students)groups1001(students),1002(qwe),1003(dba)usermod修改用户信息-u修改用户的UID-g修改用户所属的基本组GID-G修改用户附加组, 使用逗号隔开多个附加组, 覆盖原有的附加组-a追加更多的附加组, 必须和-G使用:-aG追加附加组-m家目录迁移, 必须和-d一起使用, 移动用户的家目录到新的位置-d指定用户的家目录新位置-c修改用户的注释信息-s更改用户使用的shell-l更改用户登录名-L锁定用户-U解锁用户userdel删除用户信息 -r删除用户并删除家目录groupadd / groupmod / groupdel / newgrp新增组groupadd[-g GID]groupname-g指定gid //创建基本组, 不指定gid[rootshacofun ~]# groupadd no_gid[rootshacofun ~]# tail -1 /etc/groupno_gid:x:1000: //创建基本组, 指定gid为5555[rootshacofun ~]# groupadd -g 5555 yes_gid[rootshacofun ~]# tail -1 /etc/groupyes_gid:x:5555:groupmod修改组-g修改组gid-n修改组名称 //-g 修改组gid[rootshacofun ~]# groupmod -g 1111 no_gid[rootshacofun ~]# tail -1 /etc/groupno_gid:x:1111: //-n 修改组名称 yes_gid组名 改成 active_group组名[rootshacofun ~]# groupmod -n active_group yes_gid[rootshacofun ~]# tail -1 /etc/groupactive_group:x:5555:groupdel删除组 注意如果组内有其他成员则无法删除#删除组[rootshacofun ~]# groupdel active_groupgpasswd 组创建密码[rootshacofun ~]# gpasswd qweChanging the passwordforgroup qwe New Password:1Re-enter new password:1newgrp 切换组的身份 //检查账户信息[rootdocker ~]# useradd qwe//切换普通用户[rootdocker ~]# su - qwe//创建新文件,并验证权限[qwedocker ~]$touchfile_roots[qwedocker ~]$ ll -rw-rw-r--1qwe qwe0Jun1310:06 file_roots //切换组信息[qwedocker ~]$ newgrp devops Password: //建立文件,检查权限[qwedocker ~]$touchfile_test[qwedocker ~]$ ll total0-rw-rw-r--1qwe qwe0Jun1310:06 file_roots -rw-r--r--1qwe devops0Jun1310:08 file_testchmod / chownchmod授权命令-R:对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)1 - u userg(group)o(other)a all2)数字授权 r:4 w:2 x:1 -:03)授权chmodurwx,grw,or 用户名chown指定文件的拥有者改为指定的用户或组 -R:递归授权即连同子目录下的所有文件都更改 用户可以是用户名或者用户ID组可以是组名或者组ID文件是以空格分开的要改变权限的文件列表支持通配符。chownusername:groupname 文件名chownusername.groupname 文件名chownusername 文件名chown.groupname 文件名