Linux基础小笔记
操作系统:管理硬件和程序的一套系统软件
补:
getconf LONG-BIT 查看系统位数
系统特点
Linux系统特点:
- 开放性
- 多用户
- 多任务
- 良好的用户界面
- 设备独立性
- 提供丰富的网络功能
- 可靠的安全系统
shell
用来接受用户从字符终端输入的命令,并调用对应用的程序去执行命令的程序
特点:
1、用户通过命令和Linux进行交互的桥梁
2、Linux是通过shell来解释执行命令
3、shell是一个程序
4、Linux默认的shell命令是:bash
基础命令
查看系统时间:
date
格式化显示时间:
date+'%Y-%m-%d %H:%m:%s'
设置系统时间:
date -s 20161109 日期
date -s 21:05:50 时间
date -s '20161109 09:50' 日期+时间
查看发行版本:
cat /etc/issue
cat /etc/* release
查看内核版本:
uname -r
关机:
power off、halt、shutdown -h now、init 0
重启:
reboot、init 6、shutdown -r now
文件相关命令
文件系统是操作系统的一个功能,用于管理文件夹和文件;
Windows的文件结构是多个并列的树状结构,里面是文件夹、文件;
文件路径是大小写不区分的
Linux系统里面所有的东西都可以当作文件处理;
Linux文件名称:大小写敏感,无专用扩展名
没有C、D、E盘符,一切从/开始
查看磁盘分区大小:
df -h
显示当前地址:
pwd
特殊文件:
>根目录:/
当前目录:.
当前目录的父目录:..
ls查看文件和目录:
显示当前目录下的所有文件及文件夹包括隐藏的.和..等
ls -a
显示不隐藏的文件与文件夹的详细信息
ls -l
仅显示当前目录下的文件夹
ls -d
查看包括所有子目录的内容
ls -R
常用目录:
/etc:系统管理和配置文件
/home:用户主目录
/boot:Linux系统的内核文件放在该目录下面
/shin:系统管理命令
/root:系统管理员的主目录
/bin:常用可执行文件,主要有:cat、chmod、chown、date、mv、mkdir、cp、bash等
/dev:设备文件,如:/dev/cd0
/usr:用户级应用程序和文件几乎都在这儿
/proc:一个虚拟文件系统,放置的数据都是在内存当中
/tmp:公共的临时文件存储点,存放一些临时文件
/lib:一些库文件
文件夹(目录)操作常用命令:
cd /home:进入‘/home’目录
cd ..:返回上一级目录
cd:进入个人的主目录
cd -:返回上次所在目录
mkdir 文件名:创建目录
rm 目录名:删除目录,系统会先询问是否删除
rm -f 文件名:强行删除,系统不再提示
rm 文件名:删除文件,系统会先询问是否删除
rm -rf 目录名:强行删除目录下的所有文件、子目录下的所有文件和目录、删除文件夹本身。
查看文本文件内容:
cat:短文件
less:长文件
less常用参数:
k:向上一行
j:向下一行
page up:向上一页
page down:向下一页
q:退出
tail:从文件尾部查看文件,常用参数 -f
head:从文件开头查看文件,如:head -n file
echo '内容'>>文件名:在文件里写入数据
通配符:
*:所有文件
g*:文件名以‘g’开头的文件
b*.txt:以‘b’开头,中间有0-多个字符,并以‘.txt’结尾的文件
data???:以‘data’开头,其后紧接着3个字符的文件
[abc]*:文件名以‘a’‘b’‘c’开头的文件
创建文件:
(可以使用绝对路径和相对路径)
vi 文件名:可以顺便创建内容
touch 文件名
复制文件、目录
cp 文件名(当前目录复制)
cp f1 f2
cp 文件名 地址(目标是目录,产生同名文件)
cp f1 /home/haha
cp 文件名 地址的另一文件(目标是文件,可以改名)
cp f1 /home/haha/f2
cp 多个文件名 地址(源可以是多个文件)
cp f1 f2 //home/haha
注:如果f2存在,会被覆盖,除非-i,要求提示
cp -r d1 d2(d2是粘贴后的文件名)
cp -r f1 d2 /home/haha/d2(源可以是多个文件和目录)
移动、重命名文件和目录
源地址和目的地址相同就是重命名
mv f1 f2
mv d1/f1 d1/f2
源地址和目的地址不同
mv f1 d1/ :移动f1到d1
mv f1 d1/f2:移动且重命名
mv f1 f2 d1 d2:移动多个文件到d2
mv d1 d2:如果d2不存在,重命名目录;如果d2存在,移动目录
文件链接
和复制的区别:文件在磁盘中只有一个拷贝,节省磁盘空间
链接的种类:硬链接、软链接
ln dog dog-hard;
ln -s pig pig-soft
注:
对源文件的修改,软、硬链接文件内容也会被修改,因为指向同一个文件内容
硬链接:
给文件创建一个副本,源文件名和连接文件名都指向相同的物理地址
软链接:(符号链接)
软链接的数据是所连接文件的路径名,类似Windows下的快捷方式
软链接和硬链接的区别:
- 对源文件删除(重命名)会导致软链接不可用,而硬链接不受影响
- 硬链接不能跨物理设备,软链接可以
- 硬链接不能关联目录,只能是文件,软链接可以
查找命令
which命令:查找某个命令的完整路径,也就是说是用来查找可执行文件的,如:
which grep
(查找grep命令的二进制文件路径)
whereis:快速查找程序的二进制问价,源代码文件和man手册文件的路径,如:
whereis grep
(查找grep的二进制文件,源代码文件,帮助文档找到)
find:在指定目录及其子目录下查找符合条件的指定文件,当我们忘了文件的位置,可以使用,如:
find 目录名 条件
常见条件:
-name:指定要被寻找的文件或目录名称,可用通配符
-type x:以文件类型作为寻找条件,文件类型x如下:
d:目录;f:文件;c:链接文件;c:字符设备文件;b:块文件
如:
find /temp -name "abc*" -type f
deff:比较文本文件差异,用在文件大致相同的情况下
格式:
输出解释:
|:显示每个文件不同的行
<:显示左边文件比右边文件多出来的行
>:显示右边文件比左边文件多出来的行
grep:(大小写敏感,支持正则表达式搜索文本)
文本关键字搜索,在查看日志,查看命令输出时用
如:
grep root /var/log/message:查找/var/log/message文件中包含root的行
grep 'test 123' d*:显示所有以d开头的文件中包含test 123的行
grep 'test' a b c:显示在a、b、c文件中匹配test的行
grep root -r /log:在/log所有子目录子文件中搜索包含‘root’的行
grep '^test' /log.log:在log.log中以字符串‘test’开头的行
grep '$test' /log.log:在log.log中以字符串‘test’结尾的行
常用参数:
-c:只输出匹配行的行数
-i:不区分大小写
-n:显示匹配行及行号
-v:显示不报航匹配文本所有行
-F:指明pattern非正则表达式
wc:文件内容统计
wc -l /passwd:统计/passwd文件有多少行
wc -c //passwd:统计/passwd文件有多少字节
ps -ef|wc -l:显示进程有多少行
du:查看目录使用空间,文件使用空间,du -sh
df:查看文件系统使用空间 df -h
split:指定大小分割文件
split -l 5 abc.txt log:将abc.txt分为多个文件,每个文件包含5行,生成的文件前缀为log
cat abc.txta*>>abc.txt :把如abc.txtaa、abc.txtab、abc.txtac文件合为一个
vi/vim
vi是所有Linux系统都提供的文本编辑器,它提供了一个窗口,通过它可以编辑文本文件
vim是vi的增强版本,支持vi的全部功能
- 增强命令
- 增强功能包括颜色标记功能
vi可分为三种操作模式,分别是:
1、命令模式(command mode)
2、插入模式(insert mode)
3、底线模式(last line mode)
三种工作模式,完成不同的任务
命令模式:
刚进入时缺省状态:
- 此时不可以直接去添加文字
- 不能用退格删除文字
- 可以控制屏幕光标的移动
- 字符的删、复制、粘贴
- 进入插入模式
- 进入底线模式
插入模式:
在插入模式下可以对文件内容进行编辑
在插入模式底部有个——insert——标记
在命令模式下,可以输入下面的字符进行插入模式
i:插入,从目前光标所在之处插入所有输入的字符
a:增加,目前光标所在的下一个字处开始插入字符
o:插入新的一行,从行首开始输入文字
插入模式下,按Esc键,切换到命令模式
命令模式功能:
光标移动
G:移动到文件的最后
gg:移动到文件的开头
0/^:光标移动到所在行的行首
$:光标移动到所在行的行尾
方向键:光标的上下左右移动/hjkl
Ctrl+f:下一页
Ctrl+b:上一页
x:删除,3x表示删除光标所在位置后的3个字符,包括光标所在位置
dw:删除光标所在位置的词尾的内容
dd:删除光标所在行,3dd表示删除光标所在位置往下的3行,包括光标所在行
yw:复制光标所在处到词尾的内容
yy:复制光标所在行
p:粘贴包括前面复制操作或删除操作的内容
r:取代光标所在处的字符
R:连续取代字符直到按Esc为止
u:假如误操作一个指令,可以马上按u,进行撤销,可以连续撤销
底线模式:
先按Esc键进入命令模式后,再输入冒号:进入底线模式
在底线模式下,可以完成对文件的保存,内容替换,显示格式的设置等工作
底线模式功能——查找、定位
在命令模式下输入冒号
set nu:会在文件的每一行前面列出行号
set nonu:取消行号
(#):是你要输入的数字(不要括号,格式需要),再按回车,将跳到数字指定的行
/关键字:先按/,在输入你要寻找的字
可以输入n,进行向下连续查找
N:是往上查找
set ic:忽略大小写
set noic:不忽略大小写
set wrap:折行
set nowrap:不折行
字符替换
1,$s/string/replace/g
将全文的string字符串取代为replace字符串
其中1,$s就是指搜寻区间为文章从头至尾的意思,g则是表示全部取代不必确认
也可以
%s/string/replace/g,都是一样的功能
1,20s/string/replace/g
1-20行的string替换为replace
#w filename:如果想摘取文章的某一段,存成另外一个文件,可用这个指令#代表符号,例如:
30,50 w nice
将您正在编辑文章的第30~50行存成nice这个文件
保存退出:
:w filename 将文件另存为filename
:wq 保存文件并退出
:q!强制退出并不保存
重定向
包含:
- 标准输入-》stdin——0
- 标准输出-》stdout——1
- 标准错误-》stderr——2
特点: - 用户通过终端与shell交互
- shell缺省打开了3个文件
- 进程从stdin读取用户输入
- 从stdout、stderr输入信息
- 指向同一个设备文件——终端
重定向——标准输出(‘>’:覆盖;‘>>’:追加):
(有时不想输出到终端上)
ps -ef >out
也可以:ps -ef 1>out
重定向——标准错误:
(一段shell程序错误重定向)
ps -ef 2>err
例:
假如源文本为0123 -》./0123 >both 2>&1
同时重定向stdout和stderr到同一个文件
./0123 &>both (bash 4支持)
./0123>both 2>err
同时重定向stdout、stderr到不同文件
重定向——标准输入
(有时需要以文件里面读取内容,而不是终端设备)
rm -i both >./123
管道
(第一份命令的输出作为第二个命令的输入)
让stdout和stderr同时重定向到管道
both.py 2>&1|grep err
连续使用管道
ps -ef |grep python |grep -v grep
环境变量
shell环境变量:
Linux是一个多用户的操作系统,每一个用户登录系统后,都会有一个专用的运行环境,这个运行环境就是一组环境变量的定义,用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。
env:查看环境变量
Path:
- 决定shell搜索命令的路径
- 主要给shell用
- Path值的路径的查找顺序
echo $Path
查看环境变量的值
export Path =./:$Path
配置环境变量
对所有用户生效
/etc/bashrc
对当前用户生效
~/.bashrc
配置生效命令
source /etc/bashrc
用户/用户组
- 所有文件都属于一个特定的用户和一个特定的用户组
- 每个文件都有一定的访问权限,用户限制不同用户和用户组的访问行为
- 文件权限:read、write、execute
用户类型
- root用户:创建用户:useradd 常用参数:-d 用户家目录;-g 用户所属组,例:useradd -g 组 用户
- 普通用户:由超级用户创建及授权,并且可以登录到Linux系统执行某些任务
- 系统用户:系统创建了若干用户,如:mail、ftp、bin等,默认情况下,系统用户不能登录
root用户可修改密码:
passwd 用户名
xxxxxx(输入密码)
创建用户后,密码是随机的
用户可以修改自己的密码(需要输入当前密码)-》直接passwd
只有root用户可以修改其他用户的密码
修改用户信息
usermod -g root xxx 修改用户的主组
usermod -G g2,g3 xxx 修改用户的其他组
usermod -c xx username 修改用户备注信息
usermod -l newname username 修改用户账号名称
用户查询
who:查询当前在线的用户
whoami:当前身份查询
group:查看用户的所属组
id:显示当前用户的信息
删除用户
userdel:如果加参数-r,表示在删除用户的同时,一并把用户的家目录及本地邮件存储的目录或文件也一并删除
例:
userdel A 删除用户A,但不删除其家目录及文件
userdel -r A 删除用户A,其家目录及文件一并删除
用户组
Linux系统中,每个用户账号至少属于一个组,每个组可以包括多个用户
管理组的常用命令有以下几个:(root用户才能执行)
- groupadd 创建组
- groupdel 删除组
- usermod 修改用户所属组
Linux文件访问
对于一个文件来说,访问他的用户分为3中:
- owner:文件所有者——rwx权限
- group:文件所属工作组的用户(即owner的所属组用户)——rw-权限
- other:其他用户——r--权限
改变文件访问权限(root/owner可改变)
chmod [who] [op] [permission] file
例:
chmod u+x file
who用户类型,内容为以下一项或多项
u:拥有者(user——owner)
g:group
o:owner
a:all
op表动作:
+:表示要加上permission指定的权利
-:表示要减去permission指定的权利
第二种写法:chmod u=rwx file=chmod u=rwx,g=rw,o=r file
第三种写法:chmod 775 file=chmod u=rwx,g=rwx,o=rx file
r=4 w=2 x=1
改变文件所有者和所属组
chown xx file 把文件的所有者变更为xx
chown newusername:group file 把文件的所有者变更为newusername,所属组变为group
chgrp:改变文件所属组(root、owner执行,且只能改变owner所在组)
例:
chgrp newgroup file 把文件所属组变更为newgroup
chgrp -R newgroup dirl 把,目录dirl以及下面所有的子目录和文件的所属组变更为newgroup
进程(shell就是一个进程)
正在运行的可执行文件,运行起来形成进程
查看进程(ps)
不带任何参数,同一个用户同一个终端
-ef (通常和管道符使用)
e:表示所有进程
f:full-format 所有格式
axu:列出目前所有的正在内存当中的程序
补:
关闭运行文件:./zbox -s stop
改Apache端口:./zbox -ap 81
改数据库端口:./zbox -mp 3306
前台进程
shell是正在执行的和用户进行交互的进程叫前台进程
后台进程:+&
后台运行意味着不从标准输出读入字符
例:
vi abc &
列出后台进程jobs
fg <num> 将后台进程调到前台
Ctrl+z 可挂起进程,注意jobs显示状态是stopped
bg可让进程在后台执行
终止进程
自行终止:
- 任务执行完
- 用户让其退出:exit
- 异常退出,比如程序中有除以0的代码
用户手动杀死进程:(只有ower和root才能杀死进程) - kill PID
- kill -9 PID
- Ctrl + c
定时任务
at:只能执行一次
crontab:周期性的执行
at用法
时间格式:
04:00 2019-03-17 2019年3月17号的四点执行
now + 5 minutes 5分钟后执行
5pm +3days 三天后的下午5点执行
at now+5 days
at>echo 'good'>good.log
at><EOT> ctrl +d
生成对应的shell脚本放在目录 /var/spool/at/下面
atq:检查执行(root用户能查看所有用户的,非root用户只能查看自己的)
删除任务
atrm
crontab
* | * | * | * | * | command |
---|---|---|---|---|---|
分钟 | 小时 | 号 | 月 | 星期 |
crontab -e 进入vi编辑器
30 0 * * * backup
表示:在每个的凌晨0:30运行backup命令
* * * * * command >>地址路径 每分钟执行命令,并保存到指定目录
3,15 * * * command 第3分钟、第5分钟执行
3,5, 8-11 * * * command 在上午8点到11点的第3分钟和第5分钟执行
30 21 * * * command 每晚的21:30执行命令
默认放在/var/spool/cron/下面
crond检查执行
crontab -e 进去删除对应行
打包和压缩
打包:把文件和目录的结构和内容拷贝到一个文件里
压缩:把文件经过一些算法变成体积上更小的文件
打包(tar)
tar -cvf files a b c 打包文件
tar -cvf files dirl 打包目录
tar -tvf files 查看包内容
tar -xvf files -c dirl 解开包到指定目录
下载(源码包安装)
wget 网址
tar -zxvf 包名
./configure 配置
make 编译
make install 安装
RPM包安装:
rpm -ivh rpm软件包名
删除安装的软件:
wget 网址
rpm -qa /grep 软件名
YUM安装
源:
/etc/yum.repos.d/*.repo
安装:yum install xx
删除:yum remove xx
列出已经安装的:yum list installed(available)
apt-get安装(与yum类似)
例:
apt -get install xx
压缩
gzip命令(不能压缩目录)
gzip A B 压缩1个/多个文件,压缩后,原来的文件会被替换为<name>.gz
gzip -r dirl 对文件夹下每个文件压缩
gzip -d file.gz 解压
tar -zcvf data.tar.gz file1,file2 打包并压缩
tar -zcvf data.tgz *.doc 打包并压缩
tar -zxvf data.tar.gz 解压缩
tar -ztvf data.tar.gz 查看压缩包
zip zipname.zip file1,file2 将文件都压缩到包里
unzip zipname 解压