0%

Linux基础3-实用进阶

Abstract:一些超级实用的Linux技巧.比如管道,权限,进程等命令.从b站学习来的

Keywords:Linux学习

参考文献

[1] 基于ubuntu的linux学习教程,由入门到精通_哔哩哔哩_bilibili

[2] linux系统全套学习课程-Ubuntu_哔哩哔哩_bilibili

Linux重定向(输入输出重定向)详解 (biancheng.net)

值得收藏-史上最全Linux ps命令详解-阿里云开发者社区 (aliyun.com)

ps命令用户名过长显示不全_码行天下-CSDN博客

linux 指定ps comm输出长度,ps命令查看进程指定项目信息、用户名过长显示UID_三月小公举的博客-CSDN博客

python3之http.server模块_辰辰啊-CSDN博客


文件目录结构

ubuntu没有关于盘符的概念,即没有cde硬盘.win是单用户操作系统,linux是多用户操作系统.

home中存放的是用户

根目录 就是/

etc 系统配置文件

bin 可执行的程序,类似于exe文件集合

/bin 可执行文件
/sbin system bin,管理系统的
/usr/bin 后期安装的软件
/usr/sbin 超级用户的管理程序

最好把命令和对应英文联系起来

list,print work directory,clear,remove,touch,change directory.

新建文件 touch

帮助信息 man

空格,f 下一页
b 上一页
/word 搜索word字符串
q 退出
enter 下一行

cat,more,less

就和help与man一样,一个分屏一个不分屏.

还是less好用,谁用谁知道

1
cat xxx | less

grep

搜索文件中的文本,但是我直接用vim不行吗?

^wrod,word$:行首匹配,行尾匹配.

1
head -n 5

和grep一样的使用,显示起来随自己.也不错

echo 与重定向

很少单独使用,和重定向配合,>,>>,输入和追加.

Linux重定向(输入输出重定向)详解 (biancheng.net)

输入很难理解.以下#是在root下的意思,普通用户是$

1
2
3
4
5
[root@localhost ~]# cat /etc/passwd
#这里省略输出信息,读者可自行查看
[root@localhost ~]# cat < /etc/passwd
#输出结果同上面命令相同
#注意,虽然执行结果相同,但第一行代表是以键盘作为输入设备,而第二行代码是以 /etc/passwd 文件作为输入设备。
1
2
3
4
5
[root@localhost ~]# cat a.txt
[root@localhost ~]# cat < /etc/passwd > a.txt
[root@localhost ~]# cat a.txt
#输出了和 /etc/passwd 文件内容相同的数据
#复制文件
1
2
3
4
5
6
7
[root@localhost ~]# cat << 0
>c.biancheng.net
>Linux
>0
c.biancheng.net
Linux
#不输入0就可以一直输入数据,通常EOF,因为ctrl+d就是EOF

管道

1
2
ls -lh | more #其实less挺好用的
ls -lh | grep xxx

端口

web服务器 端口80;我们访问百度,不用加80也可以直接找到百度的web服务器.

注意我们找到的是百度的web服务器,而不是百度那台机器.

只有加上端口才能连上web服务器软件,才能享有web服务.

ssh

ssh在linux是开始就有的.在win中要自己安装,或者安装xshell,putty客户端来模拟

1
ssh [-p port] user@remote
1
2
3
ssh-keygen
#把.pub文件传到服务器.
ssh-copy-id user@remote

传输文件

1
scp 文件 user@remote:目录

.ssh/config

1
Host 别名	HostName ip地址	User 用户名	Port 22#现在可以用ssh 别名来连接电脑了#现在也可以用scp 别名来传输文件了

用户权限相关命令

read:r 4

write:w 2

excute:x 1

read r 4
write w 2
excute x 1

1. 组概念

简化我们对用户权限的设置,可以一次设置一个组

1
-rw-rw-r-- s2020020922 studrwxrwxr-x s2020020922 stu

1 标记为文件还是目录

剩下的每三个一组,分三组;第一组是用户s2020020922;第二组是组对应权限,stu;第三组是其他用户的权限

2. 硬链接数

可以到达这个文件或者目录的道路.

其实和tree命令有关系的.

3. 修改文件权限

1
chmod -x test #就不能cd进testchmod +x test #加上可执行权限

4. chmod 数字化

read 4; write 2; excute 1

R 目录递归修改权限

1
chmod -R 755 文件名或目录名

超级用户root与普通用户

root是添加用户,安装软件等.

1
su #substitute usersudo #root身份执行,要输入密码,5分钟期限.

创建用户/设置密码/删除用户

1
useradd -m -g 组名 #创建用户,m有奇用passwd 用户名 #修改密码userdel -r 用户名

421服务器是在home421中创建的所有用户和组.

查看用户/设置用户

1
#/etc/group 存放组信息#/etc/passwd 存放用户信息id 用户名 #查看用户信息who #查看当前有谁用服务器whomi#查看自己是谁

以自身为例子

1
id#用户id=1015(s2020020922) 组id=1001(stu) 组=1001(stu)
1
cat -n /etc/passwd |grep s2020020922#64	s2020020922:x:1015:1001::/home/s2020020922:/bin/bash# x:有密码且加密;

home421可以通过sudo创建新用户,我的不在sudo ers组中就不能有这种操作.

1
cat -n /etc/group | grep home421#5	adm:x:4:syslog,home421#18	cdrom:x:24:home421#21	sudo:x:27:home421#23	dip:x:30:home421#35	plugdev:x:46:home421#59	lpadmin:x:120:home421#70	lxd:x:131:home421#71	home421:x:1000:#72	sambashare:x:132:home421#人家home421用户可以使用sudo和很多,即有很多附加组.

1. 添加附加组usermod

不写了,用到就百度就好

2. 用户使用shell设置避免乱码如^A

shell就是命令行窗口

1
s2020020922@home421:~$#这个是/bin/bash$#这个是dash.在xp下边输入会乱码,比如^H,^A.

如何避免以上情况

1
usermod -s /bin/bash 用户名

查看命令which,命令文件所在位置

说明很多命令的可执行文件都在bin目录下.或者sbin

切换用户 su

1
su -用户名#切换用户,-可切换至用户的目录,否则保持不变#不加用户名就是到root,非常不安全.exit #退出.

系统信息相关命令:进程等

命令 作用
date 系统时间
cal 日历
df -h disk free 磁盘剩余空间
du -h disk usage 显示目录下的文件大小
-h 人性化显示文件大小
ps aux process status 查看进程的详细状态
a 显示终端所有进程,包括其他用户进程
u 进程详细状态;感觉是显示用户的信息
x 显示没有控制终端的进程,更多进程了.
top 动态显示运行中的进程并且排序,q退出.不按q永远不停
kill -9 pid 强制终止;不能中止系统的命令

经过查看发现,ps ef和au差不多.

发现ps -w 可以拓宽显示长度,但是好像要-wwww才行.当然这样也是不能显示全2020020922这类的用户名.为啥?往下看

对了,-w是有用的,因为grep查找的就是在终端看到的,如果因为隐藏了而在终端不显示,自然用grep也查不到

1. ps命令选项 之多种风格

值得收藏-史上最全Linux ps命令详解-阿里云开发者社区 (aliyun.com)

这篇文章是大佬.

1
BSD风格语法,必须不能以中横线开头;# ps uSYSV风格语法,必须仅一个中横线开头;# ps -lGNU风格语法,必须以两个中横线开头; # ps --pid l

ps命令中会有这三种风格,根据ps的容错机制,三种风格部分命令可以混搭.

比如,ps -axu,一般先以sysv解析,不成功,然后转换成bsd风格,也不行,反正就是根据这个命令的内部机制就是不行,也可能下个版本就行了.总之,明白这个意思就好

GNU风格的选项都是带参数值的,如–sid 1

2. 查看进程的名字

没错就是为了看看哪个小可爱再用服务器

1
ps -q pid -o user  #不知道为啥必须用小写,大写不行.#USER#s2020020911其实ps -p pid -o user #也可以.

为了这个查看进程名字费了很多事,比如

ps命令用户名过长显示不全_码行天下-CSDN博客

这个哥们用了这条命令

1
ps -o ruser=userForLongName -e -o pid,ppid,c,stime,tty,time,cmd#其实 user=fiodsaaaaafjdsoaaaaaaaa 也就行了#或者ps -o pid,user     把user放最后就不会显示不全了

我以为userforlongname是个啥参数,其实就是修改了列的名字,以前的列叫USER,对应的用户名s2020020922过长,就是显示不全,把USER改成userforlongname,就可以显示全用户名了

linux 指定ps comm输出长度,ps命令查看进程指定项目信息、用户名过长显示UID_三月小公举的博客-CSDN博客

查找文件find,树文件结构tree

1
2
3
find [path] -name "*.py" #这个通配符不适合配合grep,因为.才是匹配任何字符
find /etc -name "passwd*" -exec grep "liji-wsl" {} \; #真的强
find /etc -name "passwd*" -exec ls {} \;#{}是find出来的文件,就像python中的filter一样,对每一个文件都同样操作,h \;是为了转义字符,必须加上\;

打包压缩 tar.gz

tar只是打包,不压缩.

1
2
3
4
#打包文件
tar -cvf xxx.tar xxx xxx xxx 要存放的路径
#解包文件
tar -xvf xxx.tar

gzip 压缩

tar 打包, gz 压缩

其扩展名为 xxx.tar.gz

1
2
3
4
5
6
#打包 压缩
tar -zcvf xxx.tar.gz xxx xxx 路径
#解包 解压
tar -zxvf xxx.tar.gz
#解压指定路径
tar -zxvf xxx.tar.gz -C m

apt-get 软件安装卸载更新

每个apt前都有sudo;

1
2
3
4
5
6
#安装软件
sudo apt install xxx
#卸载
sudo apt remove xxx
#更新
sudo apt upgrade

配置软件源,不全

外国的主服务器就是软件源. 但是太慢了

国内有镜像源,如阿里镜像,清华镜像.

Linux服务器资源在本地可视化

1 Linux在win上的可视化(不推荐)

1 和xmanager配合使用

gedit :跟创建txt一样

eye of ghome:查看图片

2 使用网页查看,无法修改

这个真的强

python3之http.server模块_辰辰啊-CSDN博客

1
2
3
python -m http.server #默认端口号8000,可自行设置
#在win浏览器输入http://172.27.66.249:8000/
#即服务器+端口.