Linux常用命令

 注:本文来自博客园:linux常用命令说明 - 牧梦者 - 博客园 (cnblogs.com)

 Bash解释器:

提升你的命令行技能:Bash 和 Linux 符号与命令的完整指南-51CTO.COM从文件系统导航到文本处理、网络、系统管理等,我们将涵盖各种主题,并提供每个命令的实际示例。https://www.51cto.com/article/758488.html

1. 基础快捷键使用

ctrl + c:停止进程

ctrl + l:清屏

ctrl + r:搜索历史命令

ctrl + q:退出

2.常用目录或文件夹命令

说明:安装linux时,创建一个itcast用户,然后使用root用户登陆系统

1.进入到用户根目录

cd ~ 或 cd

2.查看当前所在目录

pwd

3.进入到itcast用户根目录

cd ~itcast

4.返回到原来目录

cd -

5.返回到上一级目录

cd ..

6.查看itcast用户根目录下的所有文件

-a是显式隐藏文件 -l是以更详细的列表形式显示
ls -la

7.在根目录下创建一个itcast的文件夹

mkdir /itcast

8.在/itcast目录下创建src和WebRoot两个文件夹

分别创建:mkdir /itcast/src
mkdir /itcast/WebRoot
同时创建:mkdir /itcast/{src,WebRoot}
创建父目录及子目录:mkdir -p /opt/itcast/test

3.文件命令

1.查看文件详情

stat a.txt

2.mv移动改名

移动
mv a.txt /ect/

改名
mv b.txt a.txt

移动并改名
mv a.txt ../b.txt

3.拷贝并改名

cp a.txt /etc/b.txt

4.使用>创建一个struts.xml

> struts.xml

5.使用touch创建多个文件

touch a.txt b.txt
touch /home/{a.txt,b.txt}

6.使用echo创建文件

在/itcast目录下面创建一个test.txt文件,同时写入内容"this is test"
echo "this is test" > test.txt

向README文件追加写入"please read me first"
echo "please read me first" >> README

7.使用cat复制文件内容

将一个文件的内容复制到里另一个文件中
cat a.txt > b.txt

追加内容
cat a.txt >> b.txt

注意:>、touch、echo以及cat对文件操作的比较
①>只能创建单个文件;
②touch可以创建单个或多个文件,无法向文件插入内容;
③echo创建文件的同时并向文件插入一行字符串,操作的是单行字符串;
④cat创建文件的同时并向新文件插入别的文件里的全部内容,操作的是整个文件。

8.查看一下test.txt的内容

cat test.txt
more test.txt
less test.txt

注意:more或less为分页查看

9.cp拷贝特定文件

将所有的java语言程式拷贝至finished子目录中:
cp *.java finished

10.rm删除特定文件

删除当前目录下扩展名是java的文件
rm -f *.java

删除空目录
rmdir

11.wc统计文件

查看一下README文件有多单词,多少个少行
wc -w README
wc -l README

12.vi编辑文件内容

vi somefile.txt

① 首先会进入“一般模式”,此模式只接受各种快捷键,不能编辑文件内容
② 按i键,就会从一般模式进入编辑模式,此模式下,敲入的都是文件内容
③ 编辑完成之后,按Esc键退出编辑模式,回到一般模式;
④ 再按:,进入“底行命令模式”,输入wq命令,回车即可

一些有用的快捷键(在一般模式下使用):
a 在光标后一位开始插入
A 在该行的最后插入
I 在该行的最前面插入
gg 直接跳到文件的首行
G 直接跳到文件的末行
dd 删除行,如果 5dd ,则一次性删除光标后的5行
yy 复制当前行, 复制多行,则 3yy,则复制当前行附近的3行
p 粘贴
v 进入字符选择模式,选择完成后,按y复制,按p粘贴
ctrl+v 进入块选择模式,选择完成后,按y复制,按p粘贴
shift+v 进入行选择模式,选择完成后,按y复制,按p粘贴

查找并替换(在底行命令模式中输入)
%s/sad/88888888888888 效果:查找文件中所有sad,替换为88888888888888
/you 效果:查找文件中出现的you,并定位到第一个找到的地方,按n可以定位到下一个匹配位置(按N定位到上一个)

一些有用的快捷键(编辑模式)
ctrl + u (undo) 撤销修改
ctrl + r (redo) 恢复

4.文件与文件夹权限命令

1.linux文件权限的描述格式解读

drwxr-xr-x      (也可以用十进制表示  755)

d:标识节点类型(d:文件夹 -:文件 l:链接)
r:可读    w:可写    x:可执行
第一组rwx: 表示这个文件的拥有者对它的权限:可读可写可执行
第二组r-x: 表示这个文件的所属组对它的权限:可读,不可写,可执行
第三组r-x: 表示这个文件的其他用户(相对于上面两类用户)对它的权限:可读,不可写,可执行

2.授予拥有者u、所属组g 以及其他用户o 对文件的权限

chmod ug+w,o-w a.txt b.txt          表示将a.txt、b.txt设为其拥有者和所在组可写入,但其他以外的人则不可写入

chmod a+wx c.txt                         表示将c.txt文件设为所有人都可以写和执行

chmod -R a+r /itcast                     表示将/itcast目录下的所有文件与子目录皆设为任何人可读取

chmod g-rw haha.dat                   表示将haha.dat对所属组的rw权限取消

chmod o-rw haha.dat                   表示将haha.dat对其他人的rw权限取消

注意:u表示文件的拥有者,g表示文件的所属组,o表示文件的其他用户,a表示任何人,-表示取消权限,+表示授予权限

也可以用数字的方式来修改权限
chmod 764 haha.dat
就会修改成 rwxrw-r--
r可读权限表示为4,w可写权限表示为2,,x可执行权限表示为1,rwx表示为4+2+1即7

5.设置用户和用户组

将/itcast目录下的所有文件与子目录的拥有者设为root,用户拥有组为users
chown -R root:users /itcast

将当前目录下的所有文件与子目录的用户皆设为itcast,组设为users
chown -R itcast:users *

注意:-R表示递归执行,在文件和目录上递归执行

5.查找命令

1.查找可执行的命令

which ls

2.查找可执行的命令和帮助的位置

whereis ls

3.查找文件(需要更新库:updatedb)

locate hadoop.txt

4.从某个文件夹开始查找

find / -name "hadooop*"
find / -name "hadooop*" -ls

5.查找并删除

find / -name "hadooop*" -ok rm {} \;
find / -name "hadooop*" -exec rm {} \;

6.查找用户为hadoop的文件

find /usr -user hadoop -ls

7.查找用户为hadoop并且(-a)拥有组为root的文件

find /usr -user hadoop -a -group root -ls

8.查找用户为hadoop或者(-o)拥有组为root并且是文件夹类型的文件

find /usr -user hadoop -o -group root -a -type d

9.查找权限为777的文件

find / -perm -777 -type d -ls

10.显示命令历史

history

11.grep

grep hadoop /etc/password

6.打包与压缩

1.gzip解压缩

压缩
gzip a.txt

解压
gunzip a.txt.gz
gzip -d a.txt.gz

2.bzip2解压缩

压缩
bzip2 a

解压
bunzip2 a.bz2
bzip2 -d a.bz2

3.tar解压缩

将当前目录的文件打包压缩
tar -cvf bak.tar .
将/etc/password追加文件到bak.tar中(r)
tar -rvf bak.tar /etc/password

解压
tar -xvf bak.tar

4.tar.gz解压缩

打包并压缩gzip
tar -zcvf a.tar.gz

解压缩
tar -zxvf a.tar.gz
解压到/usr/下
tar -zxvf a.tar.gz -C /usr

查看压缩包内容
tar -ztvf a.tar.gz

5.tar.bz2解压缩

打包并压缩成bz2
tar -jcvf a.tar.bz2

解压bz2
tar -jxvf a.tar.bz2

6.zip解压缩

zip/unzip

7.正则表达式命令

1.查找并用cut分割截取

cut截取以:分割保留第七段
grep hadoop /etc/passwd | cut -d: -f7

2.排序sort

du | sort -n

3.查询不包含hadoop的

grep -v hadoop /etc/passwd

4.正则表达包含hadoop

grep 'hadoop' /etc/passwd

5.正则表达(点代表任意一个字符)

grep 'h.*p' /etc/passwd

6.正则表达以hadoop开头

grep '^hadoop' /etc/passwd

7.正则表达以hadoop结尾

grep 'hadoop$' /etc/passwd

规则:
. : 任意一个字符
a* : 任意多个a(零个或多个a)
a? : 零个或一个a
a+ : 一个或多个a
.* : 任意多个任意字符
\. : 转义.
\ :以h开头,p结尾的一个单词
o\{2\} : o重复两次

grep '^i.\{18\}n$' /usr/share/dict/words

查找不是以#开头的行
grep -v '^#' a.txt | grep -v '^$'

以h或r开头的
grep '^[hr]' /etc/passwd

不是以h和r开头的
grep '^[^hr]' /etc/passwd

不是以h到r开头的
grep '^[^h-r]' /etc/passwd

8.输入输出重定向及管道

1.新建一个文件

touch a.txt
> b.txt

2.错误重定向:  2>

find /etc -name zhaoxing.txt 2> error.txt

3.将正确或错误的信息都输入到log.txt中

find /etc -name passwd > /tmp/log.txt 2>&1
find /etc -name passwd &> /tmp/log.txt

4.追加  >>

5.将小写转为大写(输入重定向)

tr "a-z" "A-Z" < /etc/passwd

6.自动创建文件

cat > log.txt << EXIT
> ccc
> ddd
> EXIT

注意:“EXIT”,字母自定义且均需大写

7.查看/etc下的文件有多少个

ls -l /etc/ | grep '^d' | wc -l

8.查看/etc下的文件有多少个,并将文件详情输入到result.txt中

ls -l /etc/ | grep '^d' | tee result.txt | wc -l

9.用户和组命令

1. 添加一个tom用户,设置它属于users组,并添加注释信息

分步完成:
useradd tom
usermod -g users tom
usermod -c "hr tom" tom
一步完成:useradd -g users -c "hr tom" tom

2.设置tom用户的密码

passwd tom

3.添加一个jerry用户并设置密码

useradd jerry
passwd jerry

4.修改tom用户的登陆名为tomcat

usermod -l tomcat tom

5.将tomcat添加到sys和root组中

usermod -G sys,root tomcat

6.查看tomcat的组信息

groups tomcat

7.添加一个america的组

groupadd america

8.将jerry用户添加到america组中

usermod -g america jerry

9.将tomcat用户从root组和sys组删除

gpasswd -d tomcat root
gpasswd -d tomcat sys

10.将america组名修改为am

groupmod -n am america

11.为用户配置sudo权限

vi /etc/sudoers   用root编辑
在文件的如下位置,为hadoop添加一行即可
root ALL=(ALL) ALL
hadoop ALL=(ALL) ALL

然后,hadoop用户就可以用sudo来执行系统级别的指令
[hadoop@shizhan ~]$ sudo useradd huangxiaoming

12.删除普通用户

userdel  haha  或者 userdel -r haha

注意:第一个删除不彻底。

10.系统命令

1.查看主机名

hostname

2.修改主机名(重启后无效)

hostname hadoop

3.修改主机名(重启后永久生效)

vi /ect/sysconfig/network

4.修改IP(重启后无效)

ifconfig eth0 192.168.12.22

5.修改IP(重启后永久生效)

vi /etc/sysconfig/network-scripts/ifcfg-eth0

6.查看系统信息

uname -a
uname -r

7.查看ID命令

id -u
id -g

8.用于查看某一端口的占用情况

lsof -i:8080 查看8080端口使用情况

9.查看指定的端口号的进程情况

netstat -tunlp | grep 8080

10.日期

date
date +%Y-%m-%d
date +%T
date +%Y-%m-%d" "%T

11.日历

cal

cal 2012

12.查看文件信息

file filename

13.挂载硬盘

mount **** 挂载外部存储设备到文件系统中
mount /dev/cdrom /mnt/cdrom/ 将设备/dev/cdrom挂载到 挂载点: /mnt/cdrom中

加载windows共享
mount -t cifs //192.168.1.100/tools /mnt

umount /mnt/cdrom 卸载外部设备

14.查看文件大小或磁盘空间大小

统计文件或文件夹的大小
du -sh /mnt/cdrom/Packages

-h表示从人类human的角度来展示文件的大小,kB,MB,GB灵活展示,不限于其中一种
du -h
参考:-k 表示只以KB的形式展示文件大小,-m表示只以MB的形式展示文件大小

-a 查看全部文件的大小
du -ah

查看磁盘的空间
df -h

15.查看分区

df -h

16.查看内存使用情况

free -h:-h,以human的方式展示,即人性化形式

free -g:-g,以GB的方式展示

free -m:-m,以MB的方式展示

Centos7以下展示结果,h为真正可用的内存:

Linux常用命令_第1张图片

Centos7以上展示结果,available为真正可用的内存:

17.查看文件系统

/proc
查找进程所在的目录:ll /proc/10028

19.查看系统及进程限制

ulimits -a :系统限制

cat /proc/10028/limits :进程限制

18.ssh

ssh [email protected]

19.关机

shutdown -h now /init 0
shutdown -r now /reboot

11.进程控制命令

1.查看用户最近登录情况

last
lastlog

查看当前在线
who

2.查看系统日志

ls /var/log/

3.查看系统报错日志

tail /var/log/messages

tail -f /var/log/messages 

tail -F /var/log/messages 

4.查看进程

top

5.结束进程

kill 1234
kill -9 4333
同时结束多个进程:kill 15 10028 10029 10030 (15是修饰符,表示可结束多个进程)

12.远程命令

12.1 配置主机之间的免密ssh登陆

假如 A 要登陆 B
在A上操作:
%%首先生成密钥对
ssh-keygen -t rsa     (提示时,直接四个回车即可)
%%再将A自己的公钥拷贝并追加到B的授权列表文件authorized_keys中
ssh-copy-id  B

注意:A,B都为IP地址

12.2 远程执行命令ssh

ssh远程执行命令格式如下:
ssh remote_username@remote_ip command

1

ssh hadoop1@192.168.187.200 "cd /home; ls"

12.3 远程拷贝命令scp

scp基本命令格式如下:
scp [...] src_file dst_file

1

2

3

4

5

6

7

8

9

10

# 文件复制

$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

#目录复制

$scp -r local_folder remote_username@remote_ip:remote_folder

$scp -r local_folder remote_ip:remote_folder

注意:指定用户名是需要输入密码,不指定用户名需要同时输入用户名和密码。

13.iptables与firewalld防火墙命令

iptables也叫netfilter,是Linux下自带的一款免费且优秀的基于包过滤的防火墙工具,它的功能十分强大,使用非常灵活,可以对流入、流出、流经服务器的数据包进行精细的控制。通常与service和chkconfig连用。

firewalld是centos7使用的防火墙。systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。

说明 CentOS7以下或其他Linux CentOS7以上
查看防火墙状态 service iptables status systemctl status firewalld
开启防火墙 service iptables start systemctl start firewalld
关闭防火墙 service iptables stop systemctl stop firewalld
禁用防火墙 ----------------------- systemctl disable firewalld
查看防火墙是否开机启动 chkconfig iptables --list systemctl is-enabled firewalld.service
设置防火墙开机启动 chkconfig iptables on systemctl enable firewalld.service
设置防火墙开机不启动 chkconfig iptables off systemctl disable firewalld.service
重启防火墙 ----------------------- systemctl restart firewalld.service

14. yum基本命令与本地yum源制作

YUM是Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

14.1 YUM的常用命令

安装httpd并确认安装,其它软件的yum安装方式类似
yum install -y httpd

列出所有可用的package和package组
yum list

清楚所有缓冲数据
yum clean all

列出一个包所有依赖的包
yum deplist httpd

删除httpd
yum remove httpd

查找yum源中是否有mysql安装rpm包

yum list | grep mysql

14.2 制作本地YUM源

生产环境通常无法上网,不能连接外网的YUM源。为了在内网中可以使用yum安装相关的软件,就需要配置本地yum源。yum源本质上就是一个保存了多个RPM包的服务器,可以通过相关http的方式来检索、下载并安装相关的RPM包。

制作本地YUM源的步骤:

1. 准备一台Linux服务器,用最简单的版本CentOS-6.7-x86_64-minimal.iso

2. 配置好这台服务器的IP地址

3.上传CentOS-6.7-x86_64-bin-DVD1.iso到服务器

4.将CentOS-6.7-x86_64-bin-DVD1.iso镜像挂载到某个目录
   mkdir /var/iso
   mount -o loop CentOS-6.7-x86_64-bin-DVD1.iso /var/iso 

5.修改本机上的YUM源配置文件,将源指向自己,并备份原有的所有YUM源的配置文件
   cd /etc/yum.repos.d/
   rename .repo .repo.bak *
   cp CentOS-Media.repo.bak CentOS-Media.repo
   vi CentOS-Media.repo

1

2

3

4

5

6

[base]

name=CentOS-Local

baseurl=file:///var/iso

gpgcheck=0

enabled=1   #很重要,1才启用

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

添加上面的内容保存退出
说明:baseurl为挂载的目录;enabled=1,才启用;gpgcheck不需要验证包,故设为0

6.清楚YUM缓存
   yum clean all

7.列出可用的YUM源
   yum repolist

8.安装相应的软件
   yum install -y httpd

9.开启httpd使用浏览器访问http://192.168.0.100:80(如果访问不通,检查防火墙是否开启了80端口或关闭防火墙)
   service httpd start

10.将YUM源配置到httpd(Apache Server)中,其他的服务器可通过网络访问这个内网中的YUM源
   cp -r /var/iso /var/www/html/CentOS-6.7

11.取消先前挂载的镜像
   umount /var/iso

12.在浏览器中访问http://192.168.0.100/CentOS-6.7/ ,如图:

Linux常用命令_第2张图片

13.让其他需要安装RPM包的服务器指向这个YUM源,准备一台新的服务器,备份或删除原有的YUM源配置文件
  cd /etc/yum.repos.d/
  rename .repo .repo.bak. *
  cp CentOS-Media.repo.bak CentOS-Media.repo
  vi CentOS-Media.repo

1

2

3

4

5

6

[base]

name=CentOS-Media

baseurl=http://192.168.0.100/CentOS-6.7

gpgcheck=0

enabled=1   #很重要,1才启用

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

 添加上面内容保存退出

14.在这台新的服务器上执行YUM的命令
  yum clean all
  yum repolist

15.安装相应的软件
  yum install -y gcc

16.加入依赖包到私有yum的repository
  进入到repo目录
  执行命令: createrepo .
说明:createrepo (.) 这里有点

15.crontab定时器

crontab使用方式 : 

crontab file [-u user]         用指定的文件替代目前的crontab。
crontab - [-u user]             用标准输入替代目前的crontab.
crontab -l [user]                列出目前的时程表
crontab -e [user]               执行文字编辑器来设定时程表,内定的文字编辑器是 VI.
crontab -d [user]               删除用户目前的crontab.
crontab -r                         删除目前的时程表
crontab -c dir                   指定crontab的目录。
crontab文件的格式:M H D m d cmd

时程表的基本格式 : 

*  *  *  *  *  command
f1     f2     f3      f4      f5      program
分  时  日  月  周     命令

f1表示分钟1~59
f2表示小时0~23(0表示0点) 
f3表示日期1~31 
f4表示月份1~12 
f5表示星期0~6(0表示星期天) 
program表示要运行的命令

当 f1 为 * 时表示每分钟都要执行 program,f2 为 *时表示每小时都要执行程序,其余类推;
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其余类推;
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其余类推;
当 f1 为 a, b ,c,... 时表示第 a, b, c, ... 分钟要执行,f2 为 a, b, c, ... 时表示第a, b, c...个小时要执行,其余类推;

实例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

######普通模式######

#下面的例子表示每晚的21:30重启apache。

30 21 * * * /usr/local/etc/rc.d/lighttpd restart

#一月一号的4点重启apache

0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart

#下面的例子表示每星期六的11 : 00 pm重启apache。

0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart

######使用 "-" 模式######

#每月的4号与每周一到周三的11点重启apache

0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart

#周一到周五每天下午 5:00 寄一封信给 [email protected] :

0 17 * * 1-5 mail -"hi" [email protected]/tmp/maildata

######使用 "*/n" 模式######

#每一小时重启apache

* */1 * * * /usr/local/etc/rc.d/lighttpd restart

######使用 "," 模式######

#下面的例子表示每月1、10、22日的4 : 45重启apache。

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart

#下面的例子表示每周六、周日的1 : 10重启apache。

10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart

  

######使用 "-" 与 "*/n" 结合模式######

#每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha"

20 0-23/2 * * * echo "haha"

#晚上11点到早上7点之间,每隔一小时重启apache

* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart

  

######使用 "-" 与 "," 结合模式######

#下面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。

0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart

######使用  "*/n" 与 "," 结合模式######

#在 12 月内, 每天00:00, 00:30, 03:00, 03:30 .... 执行一次 /usr/bin/backup :

0,30 */3 * 12 * /usr/bin/backup

######使用   "-" "*/n" 与 "," 结合模式######

#每天07:00, 07:30, 10:00, 10:30 执行一次 /bin/ls :

0,30 7-12/3 * * * /bin/ls

参考资料:

https://www.cnblogs.com/moxiaoan/p/5683743.html

你可能感兴趣的:(linux,服务器,运维)