Linux的常用命令
Linux常用基础命令
一、系统目录结构
约定俗成:
bin (binaries)存放二进制可执行文件
sbin (super user binaries)存放二进制可执行文件,只有root才能访问
etc (etcetera)存放系统配置文件
usr (unix shared resources)用于存放共享的系统资源
home 存放用户文件的根目录
root 超级用户目录
dev (devices)用于存放设备文件
lib (library)存放跟文件系统中的程序运行所需要的共享库及内核模块
mnt (mount)系统管理员安装临时文件系统的安装点
boot 存放用于系统引导时使用的各种文件
tmp (temporary)用于存放各种临时文件
var (variable)用于存放运行时需要改变数据的文件
二、基本命令
红色命令为本人比较常用的命令(会经常更新)
1.目录操作
相对路径和绝对路径说明:
现在在/home/dijia478/下
./a/b.txt和a/b.txt都表示相对路径,当前目录下的a文件夹下的b.txt文件
/home/dijia478/a/b.txt表示绝对路径,根目录下的home文件夹下的dijia478文件夹下的a文件夹下的b.txt文件
cd ./a 切换到当前目录的a文件夹
cd ../ 切换到上一层目录
cd / 切换到系统根目录
cd ~ 切换到用户主目录
cd - 切换到上一个所在目录
pwd 显示当前所在目录的绝对路径
2.查看文件列表
ls /path/显示该目录所有文件或文件夹名
ls -a 显示所有文件或文件夹名(包含隐藏的)
ls -l 按列表显示所有文件或文件夹,缩写成ll
ll -h 友好的显示文件大小(显示成K,MB,GB)
3.创建和删除文件夹
mkdir app 创建app文件夹
mkdir –p app2/test 级联创建aap2以及test文件夹
rmdir app 删除app目文件夹(需要是空文件夹)
4.文件操作
rm a.txt 删除a.txt文件,删除需要用户确认,y/n
rm -f a.txt 不询问,直接删除a.txt文件
rm -r a 递归删除a文件夹(无论是否有内容)
rm -rf a 不询问递归删除a文件夹(慎用)
rm -rf * 删除当前目录下所有内容(最好别用)
rm -rf /* no 作 no die(Linux系统就玩完了)
cp a.txt b.txt 将a.txt复制为b.txt文件
cp -r dir/ ../ 将dir文件夹及子目录和文件复制到上一层目录中
mv a.txt ../ 将a.txt文件移动到上一层目录中
mv a.txt b.txt 将a.txt文件重命名为b.txt
touch a.txt 创建一个空的a.txt文件
echo "good good study" > a.txt 把">"左边的输出内容放到右边的文件里去,如果存在就覆盖,如果不存在就创建
vim a.txt 用文本编辑器编辑一个文件,如果不存在就创建
5.文件打包归档和压缩
tar -cvf file.tar dirpath filepath 将dir文件夹和file文件在当前目录下打包成file.tar
tar –xvf file.tar 解包到当前目录
gzip file.tar 压缩文件或文件夹
gzip –d file.tar.gz 解压文件或文件夹
tar -czvf file.tar.gz dirpath filepath 将dir文件夹和file文件在当前目录下打包并压缩成file.tar.gz
tar -xzvf file.tar.gz 解压并解包到当前目录下
tar -xzvf file.tar.gz -C /home/dijia478/ 解压并解包到/home/dijia478/目录下
常用参数:
-c:创建一个新tar文件
-v:显示运行过程的信息
-f:指定文件名
-z:调用gzip压缩命令进行压缩
-t:查看压缩文件的内容
-x:解开tar文件
zip test.txt.zip test.txt 也是打包并压缩
unzip test.txt.zip 解包并解包
.rpm结尾的包,用rpm -ivh 命令安装
6.查看文本文件
cat a.txt 一次性显示整个文件内容
more a.txt 可以分页看(翻页:空格,往回翻:b ,退出: q或者 Ctrl+C)
less a.txt 不仅可以分页,还可以方便地搜索,回翻等操作(翻页:空格,往回翻:↑,往下翻:↓,退出:q或者 Ctrl+C)
tail -10 a.txt 查看文件的尾部的10行
tail -f user.log 实时刷新显示文件的尾部,这条命令对于观察调试程序的运行非常重要
head -20 a.txt 查看文件的头部20行
注:ctrl+c 结束查看
7.搜索查找命令
grep ‘haha’ ./* 打印当前目录下所有文件中含有'haha'的地方(支持正则表达式)
grep -c ‘haha’ ./* 显示匹配到的行数
grep -r ‘haha’ ./* 对子目录也进行遍历搜索
grep -l ‘haha’ ./* 只显示命中的文件名
grep -n ‘haha’ ./* 显示命中的行号
grep -ld skip ‘haha’ ./* 显示命中的文件名,不要搜索子目录
参数含义:
-r 递归搜索子目录
-l 只列出有匹配行的文件名
-n 列出匹配行的行号
-d skip 不搜索子文件夹
常用grep跟其他命令组合使用来查找我们关心的信息(管道)
示例:
service --status-all | grep 'httpd' 在当前系统所有服务中查找'httpd'
netstat -nltp | grep '22' 查找监听'22'端口的服务程序
ps –ef | grep java 查找系统中当前运行的java进程
find ./ -name '*.txt' 查找以.txt结尾的文件(会遍历当前目录)
find ./ -name ‘install*’ 查找以install开头的文件或文件夹
find ./ -type f 查找普通文件
find ./ -type l 查找连接文件(快捷方式)
8.文本命令
> 重定向输出,覆盖原有内容;
>> 重定向输出,又追加功能;
cat /etc/passwd > a.txt 将密码文件输出定向到a.txt中
cat /etc/passwd >> a.txt 输出并且追加
ifconfig > ifconfig.txt 保存ip信息到文件中
wc -l a.txt 统计文本行数
wc -w a.txt 统计文本单词数
wc -m a.txt 统计文本字符数
wc -c a.txt 统计文本字节数
vim编辑器
vim filepath 打开文件
按Esc键 切换到命令行模式
切换到插入模式:
i 在当前位置生前插入
I 在当前行首插入
a 在当前位置后插入
A 在当前行尾插入
o 在当前行之后插入一行
O 在当前行之前插入一行
dd 删除整行
7 dd 向上删除7行
U 回退(类似于windows 中 ctrl + z)
R 替换
:(冒号) 切换到底行模式
:q 退出
:wq 保存并退出(shift + zz也可以保存)
:q! 不保存退出
9.其他常用命令
echo $JAVA_HOME 输出变量JAVA_HOME的值
rpm -qa | grep tomcat 查看当前系统是否安装tomcat
rpm -e tomcat 卸载tomcat
rpm 的其他附加命令
--force 强制操作 如强制安装删除等;
--requires 显示该包的依赖关系;
--nodeps 忽略依赖关系并继续操作;
whoami 查询当前登陆的用户名
which ls 查询ls命令的$PATH路径
mkdir test && cd test
只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才会被执行。
只要有一个命令返回假(命令返回值 $? == 1),后面的命令就不会被执行。
三、用户管理命令
1.添加用户
基本示例:
useradd user001
passwd 123456 需要设置密码
参数手册:
-u 指定组ID(uid)
-g 指定所属的组名(gid)
-G 指定多个组,用逗号“,”分开(Groups)
-c 用户描述(comment)
-d 指定用户目录
-e 失效时间(expire date)
2.删除用户
userdel user002 这样删除的时候,用户的主目录会被保留
userdel -r user002 删除用户的同时删除用户的主目录
3.修改用户属性
指令:usermod
参数:
-l 修改用户名 (login)usermod -l a b(b改为a)
-g 修改组 usermod -g sys tom
-d 修改用户的宿主目录
-G 添加多个组 usermod -G sys,root tom
-L 锁定用户账号密码(Lock)
-U 解锁用户账号(Unlock)
示例:
usermod -l user002 user001 将user001的登陆名改为user002
usermod -g root user002 将user002的组改为root组
usermod -G hello1,hello2 user002 给user002添加两个组hello1,hello2
usermod -d /home/dijia478 user002 将user002的主目录改成/home/dijia478
(要事先创建dijia478目录,并且拷入环境变量文件)
4.用户组管理
用户组相关属性:
每个用户至少属于一个用户组
(创建新用户时如果不指定所属组,则会自动创建并归属到一个跟用户名同名的组)
每个用户组可以包含多个用户
同一个用户组的用户享有该组共有的权限
用户组管理操作命令:
groupadd java 创建用户组
groupdel hello2 删除用户组
groupmod –n newname oldname 修改用户组名称
groups user002 查看用所属的组
5.用户及用户组相关配置文件
用户配置信息存放位置:
保存用户信息的文件:/etc/passwd
保存密码的文件:/etc/shadow
passwd文件示例:
user002:x:500:500:user002:/home/user002:/bin/bash
passwd文件各字段含义:
account:password:UID:GID:GECOS:directory:shell
shadow文件示例:
user002:$1$vRug41$UUxYzdP0i6s6wtUPieGDQ/:18617:0:99999:7:::
shadow文件各字段含义:
用户名 |
登陆系统的用户名 |
密码 |
加密密码 |
最后一次修改时间 |
用户最后一次修改密码距现在的天数,从1970-1-1起 |
最小时间间隔 |
两次修改密码之间的最小天数 |
最大时间间隔 |
密码有效天数 |
警告时间 |
从系统警告到密码失效的天数 |
账号闲置时间 |
账号闲置时间 |
失效时间 |
密码失效的天数 |
标志 |
标志 |
用户组配置信息存放位置:
保存用户组的文件:/etc/group
保存用户组密码的文件:/etc/gshadow(设置组管理员时才有用)
6.其他的用户管理命令
id user002 查看一个用户的UID和GID
su user001 切换到user001用户
su - user001 切换到user001用户,并且将环境也切换到user001用户的环境(推荐使用)
exis 退出当前shell(会退出当前登录用户)
四、网络配置管理
1.网卡地址配置
检查网络连通性:
ping 要测试的ip
查看ip地址
ifconfig 查看所有网络设备的地址信息
ifconfig eth0 查看指定的eth0以太网卡的地址信息
修改ip地址
ifconfig eth0 192.168.2.150 netmask 255.255.255.0
通过setup修改网络配置
在root权限下执行setup指令可以打开一个带菜单的伪图形界面来修改网络配置
通过配置文件修改ip地址
vi /etc/sysconfig/network-scripts/ifcfg-eth0 修改该配置文件即可改ip地址
[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=none HWADDR=00:0c:29:f1:b2:e8 #网卡物理地址 IPV6INIT=yes NM_CONTROLLED=yes ONBOOT=yes TYPE=Ethernet UUID="b3cd1ac3-aecf-4845-9812-9337135c072b" IPADDR=192.168.2.199 # IP地址 NETMASK=255.255.255.0 #子网掩码 DNS2=8.8.8.8 #域名服务器2 GATEWAY=192.168.2.1 #网关 DNS1=192.168.2.1 #域名服务器1 USERCTL=no |
2.主机名配置管理
查看主机名
在shell提示符的@后有显示
或者用hostname指令打印出主机名
修改主机名
vi /etc/sysconfig/network 修改其中的hostname配置项:
HOSTNAME=newname
修改完成之后要重启服务器才能生效
要想立即生效,可以执行指令 hostname newname,然后注销重登陆
主机名-IP映射,服务器本地映射
服务器网络寻址时默认是现在本地的hosts文件中查找IP映射,通过修改hosts来映射局域网内部的主机名非常方便
实现方法,将局域网内的每一台主机的“hostnamip”写入每一台主机的hosts文件中:
vi /etc/hosts
192.168.2.150 user001-server-01
192.168.2.151 user001-server-02
192.168.2.152 user001-server-03
3.网络服务启动与停止
列出系统所有应用服务状态:
service --status-all
查看指定服务运行状态:
service servicename status
启动服务:
service servicename start
停止服务:
service servicename stop
列出所有服务的随机自起配置:
chkconfig --list
关闭服务的随机自起:
chkconfig servicename off
开启服务的随机自起:
chkconfig servicename on
常用示例:
重启网络服务:service network restart
停止httpd:service httpd stop
启动httpd:service httpd start
关闭防火墙服务:service iptables stop
关闭防火墙自动启动:chkconfig iptables off
4.查看网络连接信息
指令:netstat
netstat常用示例:
netstat -natp
netstat -nltp
netstat -naup
netstat -an | grep 3306 查询3306端口占用情况
常用参数解释:
-a 显示所有连接和监听端口
-l 只显示监听进程
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-p 显示建立相关链接的程序名
lsof命令其实要比netstat强大
常用参数:
-i 显示所有连接
-i 6 仅获取IPv6流量
-iTCP 仅显示TCP连接
-i:8080 显示与8080端口相关的网络信息
-i@192.168.128.128 显示指定到192.168.128.128的连接
-i@192.168.128.128:22 显示基于主机与端口的连接
-i -sTCP:LISTEN 找出正等候连接的端口
-i -sTCP:ESTABLISHED 找出已建立的连接
-u 用户名 显示指定用户打开了什么
-u ^用户名 显示除指定用户以外的其它所有用户所做的事情
-p 10075 查看指定进程ID已打开的内容
其他用法:
kill -9 `lsof -t -u 用户名` 杀死指定用户所做的一切事情
lsof /var/log/messages/ 显示与指定目录或文件交互的所有一切
lsof -u dijia478 -i @1.1.1.1 显示dijia478连接到1.1.1.1所做的一切
五、常用系统管理命令
1.磁盘/内存使用信息查看
df -h 查看磁盘空间状态信息
du -sh * 查看指定目录下所有子目录和文件的汇总大小
free 查看内存使用状况
2.进程管理
top 查看实时刷新的系统进程信息
ps -ef 查看系统中当前瞬间的进程信息快照
ps -ef | grep myshell 搜索myshell进程的信息
kill -9 pid 杀掉进程(-9 表示强制杀死)
3.sudo权限的配置
root用户因为具有不受限制的权限,使用不慎可能对系统造成不可估量的损害,因而,生产实际中,轻易不要使用su去切换到root的身份
如果普通用户需要使用一些系统级管理命令,可以使用sudo来执行,比如 sudo vi /etc/profile
给普通用户赋予sudo权限,配置方法如下:
例如,要给hadoop用户赋予sudo任何指令(或某条指定的命令)的权利,则编辑sudoers文件 vi /etc/sudoers
在其中加入需要赋予权限的用户(红色标识)
……
root ALL=(ALL) ALL #让hadoop用户可以用root身份执行所有指令 hadoop ALL=(ALL) ALL #让user002用户可以用root身份执行所有指令 Itcast ALL=(root) /usr/sbin/useradd, /usr/bin/passwd
…… |
检查是否生效:
[root@user001-server-01 user002]# sudo -lU user002
User user002 is not allowed to run sudo on user001-server-01.
4.修改系统的默认启动级别
vi /etc/inittab
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:
~
用level 3 就启动全功能状态的命令行界面,5是图形界面。不要设置其他的,容易作死。
在命令行模式下,用startx可以手动启动图形界面(在服务器上操作)
5.文件权限管理
Linux三种文件类型:
普通文件: 包括文本文件、数据文件、可执行的二进制程序文件等。
目录文件: Linux系统把目录看成是一种特殊的文件,利用它构成文件系统的树型结构。
设备文件: Linux系统把每一个设备都看成是一个文件
文件类型标识:
普通文件(-)
目录(d)
符号链接(l)
* 进入etc可以查看,相当于快捷方式
字符设备文件(c)
块设备文件(s)
套接字(s)
命名管道(p)
u 表示“用户(user)”,即文件或目录的所有者。
g 表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
o 表示“其他(others)用户”。
a 表示“所有(all)用户”。它是系统默认值。
操作符号可以是:
+ 添加某个权限。
- 取消某个权限。
= 赋予给定权限并取消其他所有权限(如果有的话)。
设置mode所表示的权限可用下述字母的任意组合:
r 可读。
w 可写。
x 可执行。
文件权限管理:
chmod u+rwx a.txt 为a.txt添加所属用户的rwx权限
chmod 755 a.txt 为a.txt设置所属用户rwx权限,所属组rx权限,其他用户rx权限(r-4,w-2,x-1)
chmod u=rwx,g=rx,o=rx a.txt (u代表所属用户 g代表所属组的成员用户 o代表其他用户)
chown user001:hello1 a.txt 将a.txt的所有者改成user001用户,所属组改成hello1组(需要root权限)
chown -R user001:hello1 dir 将dir文件夹的所有者改成user001用户,所属组改成hello1组(需要root权限)
6.其他系统管理命令
date "+%Y%m%d" 按格式显示当前系统时间
date -s "2020-01-01 10:10:10" 设置系统时间
clear 清屏幕(只是滚到上面看不到了)
uname 显示系统信息。
uname -a 显示本机详细信息。
依次为:内核名称(类别),主机名,内核版本号,内核版本,内核编译日期,硬件名,处理器类型,硬件平台类型,操作系统名称
7.命令--------scp(linux之间的复制文件)
Linux scp命令用于Linux之间复制文件和目录。
scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。
简易写法:scp [可选参数] file_source file_target
可选参数:
- -1: 强制scp命令使用协议ssh1
- -2: 强制scp命令使用协议ssh2
- -4: 强制scp命令只使用IPv4寻址
- -6: 强制scp命令只使用IPv6寻址
- -B: 使用批处理模式(传输过程中不询问传输口令或短语)
- -C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
- -p:保留原文件的修改时间,访问时间和访问权限。
- -q: 不显示传输进度条。
- -r: 递归复制整个目录。
- -v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
- -c cipher: 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
- -F ssh_config: 指定一个替代的ssh配置文件,此参数直接传递给ssh。
- -i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
- -l limit: 限定用户所能使用的带宽,以Kbit/s为单位。
- -o ssh_option: 如果习惯于使用ssh_config(5)中的参数传递方式,
- -P port:注意是大写的P, port是指定数据传输用到的端口号
- -S program: 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。
实例:
scp local_file remote_username@remote_ip:remote_folder
或者
scp local_file remote_username@remote_ip:remote_file
或者
scp local_file remote_ip:remote_folder
或者
scp local_file remote_ip:remote_file
- 第1,2个指定了用户名,命令执行后需要再输入密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名;
- 第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名;
应用实例:
scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music
scp /home/space/music/1.mp3 root@www.runoob.com:/home/root/others/music/001.mp3
scp /home/space/music/1.mp3 www.runoob.com:/home/root/others/music
scp /home/space/music/1.mp3 www.runoob.com:/home/root/others/music/001.mp3