0%

Linux 常用命令及应用

week 7

Linux 切换root用户

1
sudo su

wc 命令

统计给定文件的行数,字数和字符数
-l 统计行数

-w 统计字数

-c 统计字节数

1
wc file

cd 命令

1
2
3
4
5
cd - //返回上一次的目录
cd .. //返回上一级工作目录
cd ~ //进入用户家目录
cd //不加参数默认进入用户家目录

tree命令

tree命令,主要功能是创建文件列表,将所有文件以树的形式列出来

shutdown 命令

1
2
shutdown -h now %立即关机 halt
shutdown -r now %重启 reboot

ls命令

1
2
3
4
5
6
7
8
9
ls -a //显示所有文件,包括以.开头的隐藏文件
ls -l //列出文件的详细信息,不包括隐藏文件
ls -la //列出文件的详细信息,包括隐藏文件
ls -t //将文件以建立时间的先后次序列出
ls -F //将显示的目录末尾添加/字样
ls -r //倒序显示文件
ls -R //列出目录树
ls -i //带-i选项就能列出文件或目录的索引节点号
ls -n //用ls -n命令来显示文件和目录的UID(译者注:userid,用户ID)和GID(译者注:groupid,组ID)

touch

创建一个文件

cat 命令

1
2
3
4
cat a.txt
cat -n a.txt //显示行号
cat > a.txt
cat a.txt > b.txt

less 命令

分页显示文件内容,可上下翻页

more 命令

分页显示文件内容,但只能向下翻页
more [参数] [文件]

-p选项: 通过清除窗口而不是滚屏来对文件进行换页
-c 类似

1
2
more -3 -p a.txt //每一个屏幕显示三行

默认看10行

tail

默认看后10行

cp 命令

1
2
3
4
5
6
cp source, dest
cp -i ~/file1 file_test // -i提示会不会覆盖已存在的目标文件
cp a.txt b.txt c.txt ../ //将a, b, c拷贝到上一级目录
cp file* ../
cp -r dir1 dir2
cp -p source dest //不改变权限

mv 命令

改名 && 剪贴

1
2
3
mv a.txt 222.txt
mv -i b.txt c.txt //提示是否覆盖
mv b.txt c.txt -f //不提示

rm 命令

1
2
3
rm file
rm -r dir1
rm -f file2 //不需要提示

mkdir 命令

1
2
mkdir dir1/dir11/dir111 -p

week7作业

  1. 执行命令: ll > file, 然后把file1文件内容加上行号输入到file2文件中
    1
    2
    ll > file1
    cat -n file1 > file2
  2. 用more命令显示file1文件内容,每屏显示3行
    1
    more -3 -c file1
  3. 将~/file1拷贝到 /tmp目录下, 并改名file_test,提示是否覆盖已存在的目标文件
    1
    cp -i ~/file1 /tmp/file_test
  4. 将/tmp目录下的file_test文件移动到主目录并改名file3
    1
    mv /tmp/file_test /file3
  5. 将/home/shuxue下所有文件和目录递归拷贝到/tmp/home/shuxue目录下, 然后删除/tmp/home/shuxue
    1
    2
    cp -r /home/shuxue /tmp/home/shuxue
    rm -r /tmp/home/shuxue

    week 8

    grep 命令

    全面搜索正则表达式,并将其打印出来
    1
    2
    3
    4
    5
    6
    7
    8
    grep 'string' dir // 在dir目录下查找包含string 的字符串的文件
    grep 'a' * //在当前目录中查找包含'a' 的文件
    grep -i "A" a // 在a文件中查找包含"A"的行, 不区分大小写
    grep root /etc/passwd //在后面的路径中查找关键词root
    grep "qwq" file* ./ //在当前文件夹所有file前缀开头的文件中查找"qwq"
    grep -c "qwq" file* //输出匹配字符串行的数量
    grep -n 'qwq' file* //列出所有的匹配行,并显示行号:
    grep -l 'qwq' file* //只列出符合条件的文件名

    sort 命令

    1
    2
    3
    4
    5
    6
    7
    sort [参数] [文件] 
    sort a //每一行第一个字母按字典序排序显示出来,不保存
    sort -r a //倒序
    sort -k 5 tmp //按第五列字典序排序
    sort -k 5 -n tmp //第五列按数值大小排序
    sort -k 5 -n tmp -r -o file //将结果保存在file中
    ls -l | sort -k 5 -n -r //管道操作

find 命令

查找和搜索文件
find [参数] [路径] [查找和搜索范围]

按名字查找

1
2
find . -name file 
find . -name "file*" //查当前目录带通配符的必须用引号括起来

按文件大小

1
find +文件或目录 -size + 

chown 命令

chown[选项][所有者][:[组]] 文件列表
必须有root 权限

1
2
3
chown sineagle file//更改文件的属主
chown sineagle:sineagle file //更改文件的属组和属主
chown :sineagle file //只修改所属组

chmod 命令


文件权限的表示方法
访问权限规定三种不同类型的用户
文件属主,同组用户,其他用户
访问权限的表示方法有三种:
三组九位字母表示法 r可读, w可写, x可执行可查找, ~无权限
三组九位二进制表示法
三位八进制表示法
文件权限的修改方法: chmod命令

1
2
3
4
5
6
7
echo "ls -al /root | wc -l" > f5
./f5 //没有执行权限
chmod +x f5 //修改他的执行权限
./f5 //可以执行了
chmod u+x,g+x,o-x f1
chmod 777 f1
chmod -001 f1 //给其他用户取消执行权限

练习题

  1. 1
    2
    chmod u+r+w+x,g+r-w+x,o+r-w-x f1

  2. 1
    chmod u+r+w+x,g+r-w+x,o+r-w-x dir1
  3. 1
    2
    3
    su
    chmod g+w,o-r-w-x /tmp/rootdir
    chmod o+x /tmp/rootdir
  4. 1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    su
    mkdir /var/www
    chown shuxue /var/www //1
    chmod u+r+x /var/www

    chown :shuxue /var/www //2
    chmod g+w+r+x /var/www

    chmod o+r-w-x //3

    chmod 777 /var/www /www.user //4

    SUID

week9

文件的链接

ln 命令

ln[选项] 源文件 [目标文件]

1
ln a b

硬链接

硬链接:是在另外的目录或本目录中添加目标文件的目录项额,
ln命令只会增加链接数,rm命令只会减少链接数,除非链接数为0,否则不会物理从文件系统被删除

  • 以文件副本存在,不占用实际空间
  • 不允许给目录创建硬链接
  • 硬链接只有在同一文件系统才能创建
    linux 每个文件对应一个Inode, 创建硬链接后,两个文件Inode是相同的

软链接

软链接
类似Windows系统快捷方式
创建软链接,源文件必须要使用绝对路径
软连接大小 = 源文件 + 路径的总字节数
目录可以创建软连接

1
ln -s /home/a.txt a.test

week10

用户和组的配置文件

passwd文件

位置:/etc/passwd
用于保存各个用户的信息

shadow 文件

用户保存用户账号的密码等信息

1
tail /etc/shadow

group 文件

保存各个用户的分组信息

用户和组的管理命令

useradd 命令

1
2
3
4
5
6
7
useradd user1
useradd -d home-dir //设置用户的宿主目录
-e date //设置账号的过期时间
-s shell-path //设置用户登录所使用的shell
-g group-name //设置用户所属的组名

useradd -g group1 li

usermod 命令

1
2
3
4
usermod -l newusername oldusername
usermod -G group1 li
usermod -L user1 %锁定用户密码,使密码无效
usermod -U user1 %解除密码锁定

userdel 命令

1
userdel [-r] 用户名 //-r表示删除用户的同时删除用户所有的相关文件

passwd 命令

1
2
3
4
5
passwd [参数] user %设置用户账号的口令
passwd -S username %查询指定用户的口令状态,只root可用
passwd -l username %锁定指定的用户的口令,只root 可用
passwd -u username %解锁指定的用户的口令, 只root可用
passwd -d username % 删除指定用户的口令,只root可用

groupadd命令

1
groupadd [-r] 组名 //不带参数为建立普通组,带参数为系统组

groupdel 命令

groupdel 组名

gpasswd [参数] 用户 组名

1
2
3
gpasswd -a username groupname //将指定用户添加到指定用户组里
gpasswd -d username groupname //从组内删除用户名
gpasswd -A username groupname //设指定用户为指定组的管理员

Linux 软件包管理

rpm包

安装RPM包的基本命令格式

1
rpm -ivh <rpm包文件名>

RPM包的卸载

1
rpm -e <rpm包名>

RPM包的升级

1
rpm -Uvh <RPM包文件名>

RPM包的验证

1
rpm -V[参数] //验证已安装的rmp包的完整性,如果一致无输出,不一致有输出

RPM包的查询

1
2
3
4
5
6
7
8
9
rpm -qa //查询系统安装的所有RPM包
rpm -qa | grep ftp
rpm -q <RPM包名> //rpm包的验证是否已经安装
rpm -qi <RPM包> //查询系统中已安装包的描述信息
rpm -ql <RPM包名> //查询已安装包里包含的文件
rpm -qf /uer/bin/ftp //查询系统中指定文件所属的软件包
rpm -qpi <RPM文件名称> //查询包中的文件信息

rpm- Uvh <RPM包名> 升级软件包,若没有则安装软件包

RPM包存在依赖问题

yum软件包管理

基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系
基本配置文件: /etc/yum.conf
软件仓库配置文件: /etc/yum.repos.d/
yum 常用命令

1
2
3
4
yum list <软件包名> //
yum info <软件报名> //查询指定软件包的详细信息
yum install <软件包名或程序组名>
yum remove <软件包名> //卸载

配置阿里云yum源

1

tar包

.tar – 普通的非压缩的包
.tar.gz 或 .tgz – 表示压缩的文件包

1
2
3
4
5
6
7
tar -cvf <tar包名> <文件或目录名>
tar -cvf sie.tar.gz /home/sineagle/
tar -zcvf sineagle.tar.gz /home/sineagle/ //压缩
tar zxvf <TAR包名> -C 目录 //释放TAR包

tar -tf sineagle.tar.gz //查看

1
2
du -sh /home/sineagle/ //查看文件的大小

src源码文件

安装步骤:

  1. 释放TAR包: tar -zxvf
  2. 查看说明文档
  3. ./configure
  4. make
  5. make install
  6. make clean
1
tar -zxvf 
1
mkdir /usr/local/java && tar -zxvf java_sdfsdfsf.tar.gz /usr/locl/java

zip包

1
2
3
4
5
6
7
rpm -qa|grep zip
zip -r filename.zip filesource //压缩文档命令
unzip filename -d destdir //解压缩名
-d 目录 把压缩文件解到指定目录下
-v 查看压缩文件目录
-o 覆盖已经存在的文件
-j 不重建文档的目录结构

week12

网络通信管理

进程管理

系统启动后第一个运行的进程是systemd(init), 它的进程号是1(pid), systemd是唯一一个由系统内核直接运行的进程

守护进程的管理

at 作业

指定系统在将来的某个时间执行任务

1
2
3
4
at sometime
command list
....
<ctrl> + d

让系统在第二天早上8:20删除临时文件并给a用户发送一个问候邮件

1
2
3
4
5
6
7
at 8:20am +1 day
rm -rf /temp/*
mail -s "Hello World"
at -l //显示at作业的标识号及执行时间
atq //显示at作业的标识号及执行时间
at -d ID //删除指定的at作业

cron 作业

实现以固定的间隔时间执行作业,并且能统一管理所有作业

1
crontab [-u user] filename //执行一个已经创建好的cron作业
1
2
3
crontab -e //进入vi编辑作业
crontab -l
crontab -r //删除

ps 命令

ps命令用于显示当前系统的进程状态
a 显示现行终端机下的所有程序,包括其他用户的程序
-a 显示所有终端机下执行的程序,除了阶段作业领导者之外
aux 没有终端的应用程序
x 显示所有程序,不以终端机来区分

1
2
3
ps -ef 
ps -aux
ps aux | grep bash

free 命令

1
free -h 

sleep 命令

1
sleep time; command

kill 命令

kill命令可将指定的信号发送给相应的进程或工作。 kill命令默认使用信号为15,用于结束进程或工作。如果进程或工作忽略此信号,则可以使用信号9,强制杀死进程或作业

1
2
kill pid
kill -9 pid %强制杀死

查看当前进程的环境变量

Linux 环境变量的格式 key -value
keyo=value;value;value

1
env

top 命令

类似windows 下的任务管理器

进程的前台和后台控制

1
2
command 
command &
1
2
3
top &
vi test.c &
jobs

jobs 命令

可以查看挂起到后台的进程

fg命令

将后台挂起的进程恢复到前台执行

1
fg 后台进程编号

Ctrl + z 快捷键

将一个前台进程执行的命令放到后台,并且处于暂停状态,不可执行

bg命令

将后台挂起的进程恢复到后台来运行

1
bg 后台进程编号

系统的服务管理

INIT进程

系统运行的第一个进程
/etc/inittab

系统服务常用的管理命令

runlevel

查看系统的运行级别

init

转换服务的运行级别

1
init [n]

chkconfig

1
2
chkconfig --list
chkconfig --level 1 network on

systemctl

取代了chkconfig和service命令,但仍可使用

1
2
3
4
5
6
7
8
9
10
systemctl list-units #列出当前系统服务的状态
systemctl list-unit-files #列出服务的开机状态
systemctl status atd.service #看服务状态
systemctl stop atd.service
systemctl start atd.service
# 服务开机自启管理
systemctl enable sshd.servce # 服务开机自动启动
systemctl disable sshd.servce #开机不启动

systemctl list-unit-files | grep atd

week13

磁盘操作管理

fdisk -l

查看所有分区情况

lsblk

用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息。

mount 命令

1
mount [][] device mountpoint

umount 命令

文件系统使用完毕需要卸载

1
2
umount [device] [dir]
umount /mnt/cdrom

du 命令

统计目录的磁盘使用情况

df 命令

用于查看当前被挂载的文件系统的信息

vi

工作模式

  1. 命令模式: 打开文件后后默认进入的模式
  2. 编辑模式: 输入一些命令后,切换到编辑模式
  3. 末行模式:

命令模式下的操作

命令模式到输入模式的转换

i:在光标之前插入
I:在光标所在行首插入
a:在光标之后插入
A:在光标所在行行尾添加文本
o:光标所在行上一行
O:光标所在行下一行

光标的移动

H(前) J(下) K(上) L(后)
0: 进入行首, $: 进入行尾
gg: 进入文件第一行, G: 进入文件末行, [x]G: 进入第x行
[x]l :向右移动x列
[x]h : 向左移动x列

删除操作

x: 删除光标后面的字符, X: 删除光标前面的字符
dw: 删除光标后面的单词
d0: 将光标位置之前本行内容删除
d$ 或 D :将光标位置之后本行内容删除
dd: 删除本行的所有内容
d3G: 将光标所在行到第三行删除
[x]dd: 删除光标开始后的x行

撤销操作:

u: 撤销
ctrl + r: 反撤销

vim中的复制和粘贴

p: (粘贴)将之前删除或复制的内容拷贝到当前光标下一个位置(如果之前复制的是一行,则拷贝到所在行的下一行)
P: (粘贴)将之前删除或复制的内容拷贝到当前光标所在行(如果之前复制的是一行,则拷贝到当前行的上一行)
yy: 复制一行
[n]yy: 复制n行

行结合命令

J: 把光标所在行与下一行结合成一行
[x]J: 把光标所在行与下面x行结合成一行

可视模式

v: 切换到可视模式
h j k l: 选择内容
y: 复制选中内容
d: 删除

查找

/[字符]: 从当前位置向下顺序查找字符
?[字符]: 从当前位置向上逆序查找字符
n: 切换到下一个
N: 切换到到上一个
#: 将光标移动到单词上,查找所有这样的单词
r: 替换当前字符

缩进

当前行向右缩进: >>
当前行向左缩进: <<

文本位移命令

> : >4G 限定4行向右移动4列

命令模式切换到文本模式

a 移动到光标下一个位置插入
A 移动到当前行末尾插入
i 在光标位置插入
I 移动到当前行行首插入
o 在当前行下一行创建一行并进入
O 在当前行上一行创建一行并进入
s 删除光标下一个位置的字符并开始插入
S 删除光标所在行的所有元素并插入

末行模式的相关操作

: 切换到末行模式
输入一个数字表示跳转到第几行
末行模式下操作:
查找:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
:s/tom/jack  //将光标所在行的第一个tom替换成jack
:s/tom/jack/g //将光标所在行所有的 tom 替换成 jack
:%s/tom/jack/ //全文执行替换 tom 体寒为 jack
:20,25s/tom/jack/g 替换第20行到25
:.,%s/tom/jack/g 正文当前到末尾所有未出现过的字符串

q: 退出
q!: 退出不保存
w: 保存
wq: 保存退出
x == wq
set nu :显示行号

命令模式下保存退出 ZZ
shell 命令

week14

文本移动

缓冲区方式的文本移动

  • 编辑缓冲区
  • 命名缓冲区
  • 删除缓冲区

命名缓冲区

由字母 a-z 命名, 即有26个字母命名的不同缓冲区。

  1. 从编辑缓冲区到命名缓冲区(复制或剪切)
    1
    2
    3
    "字母名 + 行号 + 操作命令(Y, dd)
    "a3Y
    "b5dd
  2. 从命名缓冲区到编辑缓冲区
    1
    2
    3
    "字母名 + 操作命令
    "ap
    "bp

删除缓冲区

删除缓冲区可以由数字1-9指定

1
2
"25dd %将包括光标所在行下5行删除并放到2的删除缓冲区中
"2p %粘贴回去

按行操作的文本移动

按行复制 (co 命令)

1
2
: 1, 3 co . %将1-3行文本复制到光标所在位置
: 1, 3 co 7 %将1-3行文本复制到第七行位置的下一行

文本块移动 (m 命令)

1
: 1, 3 m 7 %将1-3行文本移动到第七行位置

文本间的文本移动

1
2
: 2, 5 w filename %把2-5行文本块写到另一个新的filename 文件中
: 2, 5 w >> filename %把2-5行文本附加到另一个新的filename 文件中

编辑多个文件

1
2
vi 文件1 文件2
: n %切换下一个文件

………….

Linux下配置Hadroop

参考博客
点我

week15

export 命令

功能:设置和显示环境变量
新增修改删除环境变量

编写test.sh

1
2
3
echo "B=$B"
echo $A
echo $B
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
A=123
112 A
115 echo $A
117 B=456
118 echo $B
119 export myname=/root/dir
121 A=`data`
123 A
124 echo $A
125 B=`pwd`
127 echo $B
128 vi test.sh
129 sh test.sh %显示不出来
130 vi test.sh
131 echo $A
132 echo $B
133 export A
134 sh test.sh
135 export B
136 sh test.sh
137 history

source 命令

在当前bash 环境下读取并执行file中的命令

该命令通常可以用 . 代替

sudo 命令

sudo可以把root用户执行的敏玲赋予普通用户执行

visudo 以安全模式编辑sudoers文件

ssh

安全的shell字符命令操作,相当于windows上的远程桌面连接

openSSH客户端的安装和使用(课本p254)

基本的ssh连接方式:

1
ssh username@ip

username表示远程机器的用户名,ip表示远程机器对应的ip地址

ssh 免密登录

1
ssh root@10.3.1.74

使用scp 传文件

1
scp local_file remote_username@remote_ip:remote_file

week 16

磁盘的挂载(U盘)

1
2
sudo mount /dev/sdb1 /mnt %挂载
umount /mnt %卸载

压缩包管理

gzip和 bzip2

不常用,几乎被淘汰

1
2
3
4
gzip *.txt %把当前目录所有包含.txt的文件分别进行压缩,不保留源文件
gunzip *.gz %恢复
bzip2 %类似,但 -k可以保留源文件
%以上这两个都不能压缩目录

tar

-c 创建 - 压缩

-x 释放 - 解压缩

-v 显示提示信息 –压缩解压缩 – 可以省略

-f 指定压缩文件的名字

-z 使用gzip 的方式压缩文件 –.gz

-j 使用bzip2的方式压缩 –.bz2

如果不适用 -z 或 -j ,只能对文件或目录打包

压缩

1
2
tar zcvf 生成压缩包的名字(xxx.tar.gz) 压缩的文件
tar jcvf 生成压缩包的名字(xxx.tar.bz2) 压缩的文件

解压缩

1
2
tar zxvf 压缩包的名字 % 解压到当前目录
tar zxvf 压缩包的名字 -C 压缩的目录

shell 语法

求大佬赏个饭