Linux踩坑记:奇怪的知识又增加了_linux那些事儿
wptr33 2025-09-04 19:53 20 浏览
1 、目录"/var/cache/apt/archives"中保存着通过apt-get命令得到的deb文件包
可用"apt-get clean"命令清理
2 、解决在文本界面下挂载硬盘或优盘时出现乱码的问题
可以使用mount的"-o"选项指定参数:iocharset=utf8,codepage=936来解决。
此两个选项用来设置IO编码。
同时也可以在/etc/fstab的option下直接加入以上选项,而后用mount -a进行重新挂载或重启系统。
3 、关于su和login的区别:
login登录时会将前一用户注销掉,而su username则是建立一个虚拟环境,但沿用的是以前的环境变量。
login相当于su - username。
4.关于文本模式
debian和red hat不同,没有文本模式的概念.图形界面是由桌面管理器(通常是gdm)启动的,而gdm在debian中是当作一个daemon来处理的.所以要开机进入文本模式,就要将/etc/rcX.d/中与gdm有关的内容移除,同时将
/etc/X11/default-display-manager中的内容删除或注销(加#号).在重启进入文本模式后运行startx和xinit出现错误,无法进入桌面,具体原因日后继续探索,解决方法是运行sudo gdm命令.注意运行时使用后台运行模式.
而最新的ubuntu中,此方法已经行不通,若想开机进入文本模式,则按照以下方法进行:
将/etc/default/grub文件中的
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"改为
GRUB_CMDLINE_LINUX_DEFAULT="text"
5 . 普通用户使用sudo命令时所要求输入的密码实际是用户自己的密码,而不是root用户的密码.
6 . 对sudo命令的重新理解:
新建的用户是不能使用sudo命令的,当在/etc/sudoers加入命令全权后,用户便能方便地使用sudo来达到root用户的运行级别,甚至可以改变root用户的密码!!!这是一件相当可怕的事情,
所以对于新建用户,对其进行sudo权限的开启必须慎之又慎!!!即使开启,也应该有所限制,除了修改密码的passwd命令,adduser/useradd,gpasswd,chgrp,chmod,chown等命令也是需要限制的,
因为用户进入sudo组或拥有了对/etc/sudoers的写权限后,这都将是存在巨大风险的事.
7 . 一个系统登录后,会产生一个用户进程,该进程有7个id值:实际用户id,有效用户id,保存的set-user-ID,实际组id,有效组id,添加组id,以及保存的set-group-ID.
set-user-ID和set-group-ID不好理解,就将其看做一种属性吧.
8. date命令可以进行日期的加减运算,如:date +%Y/%m%d --date=-1day,显示昨天日期,date +%Y/%m%d --date=+1day,显示明天日期,依此类推,改变数字即可.
利用此功能,可以编写脚本用于产生一段连续日期,下面的脚本将产生150天的连续日期:
#/bin/bash
for((i=0;i<=149;i++))
do
date +%Y/%m%d --date=+"$i"day
done
#当数字前无加号时,默任为加.9. 执行脚本时,用"./"符实际上是开启一个子shell来执行脚本,所以脚本中的变量只在脚本执行中存在.
而source命令则强制在当前shell执行脚本,所以变量将会保留.
10. 打开Linux内核的数据包转发功能:
(1): echo 1 > /proc/sys/net/ipv4/ip_forward
(2): 在/etc/sysctl.conf里设置net.ipv4.ip_forward = 1
11、使用mount挂载windows的共享文件夹时,出现“CIFS VFS: cifs_mount failed w/return code = -22”的错误,这是因为系统未支持smbfs文件系统造成的,运行“apt-get install smbfs”即可
12、当一个用户在终端通过su切换另一个用户时,系统中的实际用户并没有改变,用w查看时与以前是一样的,这也说明了su开启的是一个子进程或子shell。
13、对于附加的权限“a”,其特点是只能有拥有者进行追加内容和删除,但这里的追加不是单纯的增加内容,而是通过重定向>>来进行,用vi等编辑工具进行增加是行不通的。
14、配置apache后,重启,出现以下错误提示:
[warn] NameVirtualHost *:80 has no VirtualHosts
原因是同一个主机配置了多个虚拟主机,需要保证相关的配置文件中的虚拟主机(VirtualHosts)相同,即/etc/apache2/ports.conf和
/etc/apache2/site-enabled/000-default中的VirtualHosts配置相同,例如,将其都设置为"VirtualHosts 127.0.0.1:80"。但在将其设置为127.0.0.1时只有本机能解析服务器地址,其他机器将无法通过ip地址连接服务器。
15、在vi里用自定义的字符来替换需要经常输入的字符串:
:ab chars string
此时,输入chars按空格或Enter键,chars将会自动变成string,为了避免chars与需要用到字符时产生冲突,最好将chars设为不常用的字符或组合式的字符。
16、samba服务器是Linux和Windows之间的文件共享服务器,在Linux系统中安装samba后,有些版本不需要通过service和/etc/init/XXX来管理服务,而是直接可以进行服务的独立运行,而且可以通过testparm和testparm.samba3来查看samba的相关配置和运行信息。当配置和运行正常时,在windows上便可直接在文件管理器中直接输入"\\ip_address\[share]"来链接共享文件夹。
17、NFS是Linux和Unix系统之间进行文件共享的服务,在debian系的Linux发行版上其需要安装portmap和nfs-kernel-server、nfs-common软件包,在服务的启动方面应该保证/etc/init.d/portmap服务先于nfs-kernel-server启动,否则将无法进行文件的共享。在客户端上也要保证正常安装了以上几个软件包并正常开启了相关服务,否则将会出现莫名其妙的错误。在这些工作做完后就能进行文件共享了,在客户机上,用mount远程挂载文件夹:
mount ip_address:dirname mount_point
下面是一些NFS共享的常用参数:
ro 只读访问
rw 读写访问
sync 所有数据在请求时写入共享
async NFS在写入数据前可以相应请求
secure NFS通过1024以下的安全TCP/IP端口发送
insecure NFS通过1024以上的端口发送
wdelay 如果多个用户要写入NFS目录,则归组写入(默认)
no_wdelay 如果多个用户要写入NFS目录,则立即写入,当使用async时,无需此设置。
hide 在NFS共享目录中不共享其子目录
no_hide 共享NFS目录的子目录
subtree_check 如果共享/usr/bin之类的子目录时,强制NFS检查父目录的权限(默认)
no_subtree_check 和上面相对,不检查父目录权限
all_squash 共享文件的UID和GID映射匿名用户anonymous,适合公用目录。
no_all_squash 保留共享文件的UID和GID(默认)
root_squash root用户的所有请求映射成如anonymous用户一样的权限(默认)
no_root_squas root用户具有根目录的完全管理访问权限
anonuid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的UID
anongid=xxx 指定NFS服务器/etc/passwd文件中匿名用户的GID
配置文件/etc/exports内容如下:
$ cat /etc/exports
/home/share 192.168.102.15(rw,sync) *(ro)
配置说明: 对192.168.102.15赋予读写权限,其他机器仅有只读权限。
18、今天的一个小插曲:刚开始进行ftp服务器实验的时候安装了pure-ftpd,但觉得不太好用,就将其卸载安装了vsftpd,此时登录ftp服务器竟然是pure-ftpd提供的服务,可是我明明已经将其卸载了呀,细想一下恍然大悟,虽然卸载了他的软件包,但相关的服务还在内存里呢,于是kill之,一切恢复正常。
19、ssh:ssh服务的运行和配置不难,重要的是要学会scp命令进行
远程的文件共享操作,还要掌握配对密钥的生成与使用:
在本地主机上,以某一个用户a的身份,运行:ssh-keygen -t rsa
然后会生成公钥文件:~/.ssh/id_rsa.pub和私钥文件:~/.ssh/id_rsa,此时,用scp将生成的公钥文件上传至远程主机,
在远程主机上,建立~/.ssh文件夹,然后:cat id_rsa.pub >> ~/.ssh/authorized_keys,此处注意是>>而不是>,这样当不同的主机或不同的用户也需要和同一台远程主机建立联系时就不会产生影响。
这样就建立了两台计算机之间的关系,以后ssh登录时不再需要密码。
如果此时登录时出现以下信息:Agent admitted failure to sign using the key.
解决方法是:ssh-add ~/.ssh/id_rsa
在一些系统上需要将远程主机的.ssh目录的权限设为700,authorized_keys文件权限设为600。
在ssh学习的过程中,重点是scp命令,它可以方便的进行远程的备份,当然更好的选择是rsync(与sync很像,sync用来将内存立即写入硬盘),
几个常用的选项是:
-a 保留文件的属性
-r 递归
-H 保持文件硬链接
-z 备份文件传输时压缩
--progress 传输时显示进度
--delete 删除目标备份没有的文件
-e ssh 使用ssh进行加密
20、.bashrc和.bash_profile的区别:
.bashrc是交互式、non-login方式进入bash运行的
.bash_profile是交互式、login方式进入bash的
所谓的non-login和login方式很简单,在Xwindow下运行终端时,并没有登录,而在字符界面下,却是需要输入登录信息的,这就是两者的区别。
相关推荐
- oracle数据导入导出_oracle数据导入导出工具
-
关于oracle的数据导入导出,这个功能的使用场景,一般是换服务环境,把原先的oracle数据导入到另外一台oracle数据库,或者导出备份使用。只不过oracle的导入导出命令不好记忆,稍稍有点复杂...
- 继续学习Python中的while true/break语句
-
上次讲到if语句的用法,大家在微信公众号问了小编很多问题,那么小编在这几种解决一下,1.else和elif是子模块,不能单独使用2.一个if语句中可以包括很多个elif语句,但结尾只能有一个...
- python continue和break的区别_python中break语句和continue语句的区别
-
python中循环语句经常会使用continue和break,那么这2者的区别是?continue是跳出本次循环,进行下一次循环;break是跳出整个循环;例如:...
- 简单学Python——关键字6——break和continue
-
Python退出循环,有break语句和continue语句两种实现方式。break语句和continue语句的区别:break语句作用是终止循环。continue语句作用是跳出本轮循环,继续下一次循...
- 2-1,0基础学Python之 break退出循环、 continue继续循环 多重循
-
用for循环或者while循环时,如果要在循环体内直接退出循环,可以使用break语句。比如计算1至100的整数和,我们用while来实现:sum=0x=1whileTrue...
- Python 中 break 和 continue 傻傻分不清
-
大家好啊,我是大田。...
- python中的流程控制语句:continue、break 和 return使用方法
-
Python中,continue、break和return是控制流程的关键语句,用于在循环或函数中提前退出或跳过某些操作。它们的用途和区别如下:1.continue(跳过当前循环的剩余部分,进...
- L017:continue和break - 教程文案
-
continue和break在Python中,continue和break是用于控制循环(如for和while)执行流程的关键字,它们的作用如下:1.continue:跳过当前迭代,...
- 作为前端开发者,你都经历过怎样的面试?
-
已经裸辞1个月了,最近开始投简历找工作,遇到各种各样的面试,今天分享一下。其实在职的时候也做过面试官,面试官时,感觉自己问的问题很难区分候选人的能力,最好的办法就是看看候选人的github上的代码仓库...
- 面试被问 const 是否不可变?这样回答才显功底
-
作为前端开发者,我在学习ES6特性时,总被const的"善变"搞得一头雾水——为什么用const声明的数组还能push元素?为什么基本类型赋值就会报错?直到翻遍MDN文档、对着内存图反...
- 2023金九银十必看前端面试题!2w字精品!
-
导文2023金九银十必看前端面试题!金九银十黄金期来了想要跳槽的小伙伴快来看啊CSS1.请解释CSS的盒模型是什么,并描述其组成部分。...
- 前端面试总结_前端面试题整理
-
记得当时大二的时候,看到实验室的学长学姐忙于各种春招,有些收获了大厂offer,有些还在苦苦面试,其实那时候的心里还蛮忐忑的,不知道自己大三的时候会是什么样的一个水平,所以从19年的寒假放完,大二下学...
- 由浅入深,66条JavaScript面试知识点(七)
-
作者:JakeZhang转发链接:https://juejin.im/post/5ef8377f6fb9a07e693a6061目录...
- 2024前端面试真题之—VUE篇_前端面试题vue2020及答案
-
添加图片注释,不超过140字(可选)...
- 今年最常见的前端面试题,你会做几道?
-
在面试或招聘前端开发人员时,期望、现实和需求之间总是存在着巨大差距。面试其实是一个交流想法的地方,挑战人们的思考方式,并客观地分析给定的问题。可以通过面试了解人们如何做出决策,了解一个人对技术和解决问...
- 一周热门
- 最近发表
-
- oracle数据导入导出_oracle数据导入导出工具
- 继续学习Python中的while true/break语句
- python continue和break的区别_python中break语句和continue语句的区别
- 简单学Python——关键字6——break和continue
- 2-1,0基础学Python之 break退出循环、 continue继续循环 多重循
- Python 中 break 和 continue 傻傻分不清
- python中的流程控制语句:continue、break 和 return使用方法
- L017:continue和break - 教程文案
- 作为前端开发者,你都经历过怎样的面试?
- 面试被问 const 是否不可变?这样回答才显功底
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)
- c语言 switch (34)
- git commit (34)
