linux使用记录
目录结构
这里是先规划好不同的功能模块,程序按这个结构,分散放进去。
window也有这方面,但基本是按盘符,然后都放在自己的目录为主。
这里好像是磁盘先分区。然后挂载上来一个设备符号,再设置目录放在哪个分区设备?
usr是Unix System Resource 不是User的简写
/usr/bin 系统预装的可执行程序
/usr/local/bin 用户自己的可执行程序
etc--配置文件
系统程序,安装的程序,配置一般都放这儿,
如crontab,mysql,nginx
var--经常被修改的文件
www--nginx默认网站目录
log --程序的日志,
home--用户根目录
user1--某个用户的目录,一般自己弄的程序就放在这儿?
/proc--它是系统内存的映射
/lib-基本的动态连接共享库
目录颜色
蓝色-目录;绿色-可执行文件;红色-压缩文件或包文件;浅蓝色-链接文件;灰色-其它文件;红色闪烁-链接的文件有问题了;黄色-设备文件
系统配置
系统级的有好几个文件,
用户级的.bashrc,profile。云服务器上没有。
修改了用sourse xx来加载、crontab里有些也需要这样?
系统权限
到处都会遇到权限限制,除非直接root用户。
文件权限
分为3种用户,3种权限,用九位来显示 xxx xxx xxx
三种用户--所属用户,所属群组,其他用户
三位权限--r-可读,w-可写,x-可执行,转化为数字: r=4,w=2,x=1
用户默认会有个权限模板
会是4位数字,第一位不用管。
默认root用户是0022,普通用户0002
这里的换算关系
文件(或目录)的初始权限 = 文件(或目录)的最大默认权限 - umask权限
文件的最大默认权限是 666,换算成字母就是 "-rw-rw-rw-",umask 的值是 022,换算成字母为 "-----w--w-"。把两个字母权限相减,得到 (-rw-rw-rw-) - (-----w--w-) = (-rw-r--r--)
目录的默认权限最大可以是 777
通过umask命令来查看和编辑
shell命令
w -当前的登录用户。
目录/文件操作
定位操作
pwd--当前目录
ls 后面也可以加指定的目录
-l 详细
-a 包含隐藏
cd
'/' 根目录。/home
.. 上层目录
- 回到上一个目录
~ 当前用户的目录
which 只在PATH里查可执行文件。
whereis 只查找可执行文件,目录名称等,在一个索引库中查找。
find / -name nginx.conf 实际硬盘查找
路径 /-根目录。 .--当前目录 /sdcard/ -指定目录
然后 / 本来理解是全局的,但在android 中,并不搜索sdcard中的内容。其它有没漏掉未知。
维护操作
mkdir [-p] dirName
-p 目录是多层的话,每个都建起来
mv
cp
关联
ln ln [参数][源文件或目录][目标文件或目录]
类似于windows快捷链接。 在android文件系统里看到过很多文件夹都是链接形式的。
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
rm xx
rm -rf file/ 目录
rm -rf * 当前文件夹下所有
查看/修改/过滤
cat xx
-n 显示行数
head -n 10 前几行
tail -n 10 从尾部算起几行
-f 循环读取最后几行
grep xx
-v 不包含匹配文本
也可以通过管道过滤处理
|head
|tail
|grep 'xx' 查找包含字符的。
sed 功能很强
插入,删除,修改,替换。
替换
sed 's/222/aaa/g' sedfile
系统操作
ps -e 所有用户进程
-f 全格式显示进程
free -mh 系统内存
df -h 磁盘文件
netstat -tunlp 网络端口
如果连接的是docker里面的服务,显示不出来相应的客户端ip
要到docker里面用这个命令才会显示。?
符号
| 管道
> 重定向
$ 后面是处理后的值
cd $(ls|grep xx)
& 把任务放后台执行
unzip xxx -d directoryname --建一个文件夹解压
技巧
tab键-自动补齐参数,有多个选项会列出来,单一选项就直接补齐。简直是灵魂所在。
如 cd 目录名参数
cd 后按tab 会出来下面的子目录列表,然后输首字母,直接补齐。
! 执行最后的一条XX关键词命令
如 ! docker, 后面还可以再加参数到这个命令下
ctrl+r--匹配历史命令。
history--列出历史输入命令
ctrl+u--删除开头到光标处的内容。
复制黏贴
ctrl + insert
shift + insert
标选中后右键,直接黏贴到当前处。也能正常黏贴命令到Windows。
窗口输出
程序在运行后,都会至少打开三个文件描述符,分别是0:标准输入;1:标准输出;2:标准错误。
大致理解1,2都是会输出到终端显示上。
在find时遇到“Permission denied”,输出一大堆这类错误信息,grep也过滤不掉。
管道 | 只是把 1 给接上去。 2 不受影响。
find / -name art 2>&1 | grep -v " denied"
2>&1 这是把2重定向至1。。
find / -name art 2>/dev/null
2> /dev/null 这是把2丢弃掉
脚本/bash
变量
申明--直接用就行,没有类型?
赋值--返回值- "$(x)",没有双引号也行,不知道有啥区别
x如date +%H:%M:%S; cat date.txt
开头都要写 --#!/bin/bash
表示执行下面脚本的程序所在。
这里大概脚本可以有由不同程序来执行,用python都行?
不写的话是用默认的脚本执行器,可能有问题
还可以执行脚本的时候传入变量。。
做好后要用chmod +x 赋予执行属性,
执行脚本
./name 前面要加前缀,不加的话系统是去PATH里面找命令,不会在当前文件夹下。
文本vim/vi编辑
完全不一样的编辑方式。光用键盘就能完成这么多操作。。
有几种工作模式。
命令模式 - 初始模式,输入字母,这时候会被识别成命令。
底线命令模式 -输入“:”,可以在底线输入命令
编辑模式 - 按i进去,按ESC退出
命令模式
复制--源行-yy,目标行-p
删除--整行-dd
查找字符-- /xxx, 会跳到字符处,然后回车,再按n下一个。
底线命令
保存退出。-wq
退出不保存-q!
编辑的文件要有权,否则保存不了。可以加sudo切换到root权限
制作服务
手动部署docker时用到的.其它程序要做成服务也都是这个步骤。
先写好文件放到/usr/lib/systemd/system/docker.service
systemctl daemon-reload --文件有变动就要先执行这条
systemctl start docker--不知道为啥出错了。这个是启动命令,然后docker已经手动开启了?
systemctl enable docker.service --这才是真的自启动?
systemctl list-unit-files --列出所有服务
systemctl list-unit-files | grep enabled --自己加的一般在这
ssh远程
ssh是一种协议,有多种客户端软件。
Putty,SecureCRT,XShell
SecureCRT--要破解,可以开多个tab连多台主机,管理员用。
Putty--开源,小巧。虽然是单窗口,但可以开多个程序。一般都用这个。
XShell--说还可以。
MobaXterm--图形界面,看着支持的协议很丰富