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)用于存放运行时需要改变数据的文件

https://www.cnblogs.com/chenpython123/p/11355151.html   linux 文件目录图解

二、基本命令

这些命令主要是在centos系统的实现的,大部分跟nbumtu Redhat 系统差不多。

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

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 a.txt ../  将a.txt文件复制到上一层目录中

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  把">"左边的输出内容放到右边的文件里去,如果存在就覆盖,如果不存在就创建
vi a.txt  用文本编辑器编辑一个文件,如果不存在就创建

vim 编辑器的使用 

https://coolshell.cn/articles/5426.html

5.文件打包归档和压缩  tar   zip

-c: 建立压缩档案 --create create a new archive
-x:解压 --extract, --get extract files from an archive
-t:查看内容 --list list the contents of an archive
-r:向压缩归档文件末尾追加文件 --append append files to the end of an archive
-u:更新原压缩包中的文件 --update only append files newer than copy in archive

这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。

下面的参数是根据需要在压缩或解压档案时可选的。

-z:有gzip属性的
-j:有bz2属性的
-Z:有compress属性的
-v:显示所有过程
-O:将文件解开到标准输出

下面的参数-f是必须的
-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。 --file=ARCHIVE use archive file or device ARCHIVE

tar 的用法:

  tar -cvf file.tar dirpath filepath  将dir文件夹和file文件在当前目录下打包成file.tar

  tar -czvf file.tar.gz dirpath filepath       将dir文件夹和file文件在当前目录下打包并压缩成file.tar.gz

  tar –xvf file.tar                            解包到当前目录

  tar -xzvf file.tar.gz                                  解压并解包到当前目录下

  tar -xzvf file.tar.gz -C /home/dijia478/  解压并解包到/home/dijia478/目录下

  在一个目录下, 把另一个目录下的文件、文件夹压缩成 tar.gz

    tar  -C  ../statustest  -czvf  aa.tar.gz  qwe.sh aa.txt  dirpath

  用 . (点) 表示路径下的全部文件

    tar -C ../mdpproduct/tools  -cvf   aa.tar  .

      可以向 tar 的压缩包追加 文件,或者 更新文件  ,不能向 tar.gz 压缩包追加文件

        tar -C ../mdpproduct  -rvf aa.tar  make_mdp_product.sh   追加文件

        tar -uf  aa.tar  -C ../statustest/  aa.txt    更新文件

  不解压看压缩包内容

    tar -tf file.tar.gz      unzip -v  *.zip

zip  的用法

1. 将目录下的全部文件zip压缩
  zip -r myfile.zip ./*
  将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r 表示递归压缩子目录下所有文件.

2. 将 某文件追加到 zip包中
  zip -m myfile.zip ./rpm_info.txt
  向压缩文件中 myfile.zip 中添加 rpm_info.txt 文件

3. 删除 zip包里的 某个文件
  zip -d myfile.zip smart.txt
  删除压缩文件中 smart.txt 文件

4. 解压
  unzip -o -d /home/sunny myfile.zip
  把myfile.zip文件解压到 /home/sunny/
  -o:不提示的情况下覆盖文件;
  -d: -d /home/sunny 指明将文件解压到/home/sunny目录下;

  unzip myfile.zip
  解压文件到当前目录

 

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  统计文本字节数

vi编辑器
vi 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的值

whoami  查询当前登陆的用户名
which ls  查询ls命令的$PATH路径

mkdir test && cd test
只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才会被执行。 
只要有一个命令返回假(命令返回值 $? == 1),后面的命令就不会被执行。

sed 命令   https://coolshell.cn/articles/9104.html

 

三、用户管理命令

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 显示建立相关链接的程序名

五、常用系统管理命令

1.磁盘/内存使用信息查看

df -h  查看磁盘空间状态信息
du -sh *  查看指定目录下所有子目录和文件的汇总大小    
free  查看内存使用状况

2.进程管理

top  查看实时刷新的系统进程信息
ps -ef  查看系统中当前瞬间的进程信息快照
ps -ef | grep myshell.sh  搜索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)
文件权限管理:
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 显示本机详细信息。
依次为:内核名称(类别),主机名,内核版本号,内核版本,内核编译日期,硬件名,处理器类型,硬件平台类型,操作系统名称

 

posted @ 2019-02-21 19:49  马克图  阅读(202)  评论(0)    收藏  举报