linux基础命令

目录
. 当前目录 .. 父目录! / 根目录
useradd
添加用户

yum
yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
ubuntu使用yum命令时报错解决方法
root@i-ka9tolv1:/home/ubuntu/local/nginx-1.6.2# yum -y install openssl openssl-devel |
ls | l |ll

ls -ld 可以看执行权限

发现我的Ubuntu下 l 就能显示当前目录!
cd
cd . 进入当前目录
cd .. 进入父目录
cd / 进入根目录
pwd

touch

mkdir

cp


绝对路径|相对路径

mv

rm

man
查看命令的帮助


more

head
查看文件前几行

tail
查看文件后几行

in 链接(快捷方式)

软链接是快捷方式!如果源文件没了!
硬链接相当于拷贝了一份!如果源文件没了!没有影响!
查找
which 只用于系统命令 常用于查看是否存在这个命令

find

grep (ctrl +f 一样)

grep flag /* 在根目录搜索所以文件里 搜索flag字符串
grep flag /flag

压缩
gzip压缩

gunzip解压


tar
命令名称: tar
命令所在路径: /bin/tar
执行权限:所有用户
语法: tar 选项[cvf] [目录]
-c 产生.tar打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩
功能描述:打包目录
压缩后文件格式: .tar.gz
例:
tar -zcvf dir1.tar.gz dir1
将目录dir1压缩打包
注意 f参数必须要在最后不让会有问题:

tar命令解压缩语法:
-x 解包.tar文件
-v 显示详细信息
-f 指定解压文件
-z 解压缩
例: $tar-zxvf dir1.tar.gz
将目录dir1.tar.gz解压
命令名称: zip
命令所在路径: /usr/bin/zip
执行权限:所有用户
语法:
zip选项[-r] [压缩后文件名称] [文件或目录]
-r 压缩目录
功能描述:压缩文件或目录
压缩后文件格式: .zip
例:
zip services.zip /etc/services 压缩文件
zip -r test.zip /test 压缩目录
zip与unzip

linux下常用符号:
> |
多命令执行顺序
多命令执行符 格式 作用 |
例如
[root@localhost ~]# pwd;touch abc;ls;date |
后台执行:“&”
& 表示将任务置于后台执行 |
&&(命令执行控制)
语法格式如下: |
||(命令执行控制)
语法格式如下: |
| 管道符
- 命令格式: 命令1| 命令2
- 作用:命令1的正确出书作为命令2的操作对象

通配符
| 通配符 | 作用 |
|---|---|
| ? | 匹配一个任意字符 |
| * | 匹配0个或多个任意字符,也就是可以匹配任何内容 |
| [] | 匹配括号中任意一个字符 |
| [-] | 匹配括号中任意一个字符,“-”代表范围 |
| [^] | 逻辑非,表示匹配不是括号内的一个字符 |
[]和{}的使用
{…}与[…]有一个很重要的区别。如果匹配的文件不存在,[…]会失去模式的功能,变成一个单纯的字符串,而{…}依然可以展开。
|


看了{a,b}
注意!!!
(通配符和linux里的正则匹配不一样)(两个东西)
正则表达式
^ |
还有一些内置的通用字符簇
[[:alpha:]] 任何字母 |
Bash中其他特殊符号
| 符号 | 作用 |
|---|---|
| ‘’ | 单引号,在单引号中所有的特殊符号,如“$”和“`”(反引号)都无特殊含义 |
| “” | 双引号,在双引号中特殊符号都无特殊含义,但“$”、“`”(反引号)和“\”是例外,拥有“调用变量值”,“引用命令”和“转义符”的特殊含义 |
| “ | 反引号:反引号括起来的内容是系统命令,在Bash中先会执行它和() |
| $() | 和反引号作用相同,用来引用系统命令 |
| # | 在shell脚本中,#开头的行代表注释 |
| $ | 用于调用变量的值,如需要调用变量name的值时,需要用$name的方式得到 |
| \ | 转义符,跟在\之后的特殊字符将失去特殊含义,变为普通字符 |
单双引号的性质和php里差不多!
重定向
大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回到您的终端。一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端。同样,一个命令通常将其输出写入到标准输出,默认情况下,这也是你的终端。 |
啥意思呢:就是你的终端是标准输入 也是 标准输出!
现在重定向一下!把标准输入 或者 标准输出改了!
如:command > file
把标准输出改成file!!!
简单点理解:就是改了位置!
|
shell 提供了两种方法(() 和 {})****
()和{}
如果希望把几个命令合在一起执行,shell提供了两种方法。既可以在当前shell也可以在子shell中执行一组命令。 |
linux权限管理命令***


chmod




答案:
是不能的!因为file1所在的文件夹dir1 other是没有wx权限的!只有r权限!
所以虽然 file1是777,但是他的父目录dir1!other是没有权限的!所以删除不了!
所有只有当other拥有目录的权限时!里面的文件无论啥权限都能删除!因为你连这个目录都能删!里面的文件还删不了吗!

如果文件夹里面还有一个文件夹!他如果没有权限!是不能直接删除所有的!上图!
chown (改变所属者) | chgrp(改变所属组)

用户配置文件***

/etc/pawssd

用户类型

伪用户

用户组

/etc/shadow

/etc/group

重点:
setuid

就是设置了setuid
other用户相当于用了root身份来执行!
用户组命令

‘
用户管理命令


sudo|su


进程
进程就是自己写的程序!

ps -ef |grep python
ps -ef |grep python&后台运行

ps


Linux进程管理
进程的概念
1、程序是静态概念,本身作为一种软件资源长期保存,而进程是程序的执行过
程,它是动态概念,有一定的生命期,是动态产生和消亡的。
2、程序和进程无一一对应关系。一个程序可以由多个进程共用;另一方面,一个
进程在活动中有可能顺序地执行若干个程序。
父进程和子进程
1、子进程是由一个进程所产生的进程,产生这个子进程的进程称为父进程。
2、在Linux系统中,使用系统调用fork创建进程。fork复制的内容包括父进程
的数据和堆栈段以及父进程的进程环境。
3、父进程终止子进程自然终止。
前台进程:
在ShelI提示处打入命令后,创建-一个子进程,运行命令,Shell等待命令退
出,然后返回到对用户给出提示符。这条命令与Shell异步运行,即在前台运行,
用户在它完成之前不能执行另-一个命令。
后台进程:
在Shel提示处打入命令,者后随一个&,Shell创建的子进程运行此命令,但
不等待命令退出,而直接返回到对用户给出提示。这条命令与Shell同步运行,
即在后台运行。后台进程必须是非交五式的。
进程状态
就绪:进程已经分配到资源,但因为其它进程正占用CPU,所以暂时不能运行而等
待分配CPU的状态。
等待:因等待某种事件而暂时不能运行的状态。
运行:进程分配到CPU,正在处理器上运行。
查看用户信息w命令
w显示信息的含义
JCPU:以终端代号来区分,该终端所有相关的进程执行时,所消耗的CPU时间
会显示在这里
PCPU:CPU执行程字耗费的时间
WHAT:用户正在执行的操作
loadaverage:分别显示系统在过去1、5、15分钟内的平均负载程度。
FROM:显示用户从何处登录系统,“:0”的显示代表该用户时从XWindow下,
打开文本模式窗口登录的
IDLE:用户闲置的时间。这是个计时器,-旦用户执行任何操作,该计时器便会
被重置
查看个别用户信息:W用户名
查看系统中进程
指令名称ps
功能描述:查看系统中进程
a显示所有用户的进程
u显示用户名和启动时间
x显示没有控制终端的进程
e显示所有进程,包括没有控制终端的进程
l长格式显示
w宽行显示,可以使用多个w进行加宽显示
f完整的输出
ps常用输出信息的含义
TIME进程自从启动以来启用CPU的总时间
COMMAND/CMD进程的命令名
USER用户名
%CPU占用CPU时间和总时间的百分比
%MEM占用内存与系统内存总量的百分比
PID进程号
PPID父进程号
TTY进程启动的终端
STAT进程当前状态D,不可中断的休眠状态R运行状态Z僵死状态T停止
例:
ps-u或者ps-l#查看隶属于自己进程详细信息
ps-le或者ps-aux#查看所有用户执行进程的详细信息
ps-aux|greptom
ps-uUtom
查看系统中指定用户执行的进程
ps-ef|grepinit
查看指定进程信息
kill杀死进程
1,为什么杀死进程?
2,该进程占用了过多的CPU时间
3,该进程锁住了一个终端,使其他前台进程无法运行
4,运行时间过长,但没有预期效果产生了过多到屏幕或磁盘文件的输出
5,无法正常退出
kill-9进程号(强行关闭)
kill-1进程号(重启进程)
pgrep服务名称#查找服务进程号
pkill进程名称#关闭进程
nohup
进程在用户退出后仍旧继续执行(后台执行)
nohup命令将执行后的数据信息和错误信息默认储存到文件nohup.out中
nohup命令&
任务计划

##### 计划任务
systemctl理解
Linux 服务管理两种方式service和systemctl
systemd是Linux系统最新的初始化系统(init),作用是提高系统的启动速度,尽可能启动较少的进程,尽可能更多进程并发启动。
systemd对应的进程管理命令是systemctl
yum install crontabs (安装 crontabs)
systemctl enable crond (设为开机启动)
systemctl start crond(启动crond服务)
systemctl status crond (查看状态)
含义:利用任务计划功能,可以将任何脚本、程序或文档安排在某个最方便的时间运行
- 1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
- 2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置
crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。
-e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI
-u user 是指设定指定 user 的时程表,如果不使用 -u user 的话,就是表示设定自己的时程表
-r : 删除目前的时程表
-l : 列出目前的时程表
时间格式如下:
```
f1 f2 f3 f4 f5 program
```
- 其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。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…个小时要执行
```
* * * * *
- - - - -
| | | | |
| | | | +—– 星期中星期几 (0 - 7) (星期天 为0)
| | | +———- 月份 (1 - 12)
| | +————— 一个月中的第几天 (1 - 31)
| +——————– 小时 (0 - 23)
+————————- 分钟 (0 - 59)
```
实例
每一分钟执行一次 /bin/ls:
```
* * * * * /bin/ls
```
在 12 月内, 每天的早上 6 点到 12 点,每隔 3 个小时 0 分钟执行一次 /usr/bin/backup:
```
0 6-12/3 * 12 * /usr/bin/backup
```
每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分….执行 echo “haha”:
```
20 0-23/2 * * * echo “haha”
```
vi /etc/crontab #在文件中写入执行计划
crontab /etc/crontab # 生效执行计划
cat /var/log/cron # 查看执行计划的执行日志
网络通信命令
wirte
wall
ping

ifconfig
shutdown
reboot

shell小技巧***
2>错误输出重定向




