重新使用linux的一些事情
workstatin版基本上已经有了常用的那些功能了, 代码开发完全足够了, 不需要再去加什么东东了
httpd已经有了, 结构:
- /usr/lib: 库,放置的是 (操作)系统的静态库, 大多数是直接放置的, 还有一部分按目录分类放置的
- /usr/lib/systemd 是: system daemon[dim2n]: ae: i, 是放置的一些 系统的守护进程
- /usr/lib/systemd/system 是放置的 系统的 内置服务进程(即系统自带/预先就给你安装好了的服务), 就包括 httpd.service, httpd.service.d , socket.service socket.service.d 这些服务和目录
系统安装的服务是放在: /usr/lib/systemd/system中的, 比如/httpd.service, 而要开机启动 systemctl enable httpd.service
则要将他们放到 etc(的相应目录)下去, enable就是去创建这个symbol链接:
/etc/systemd/system/multi-user.target.wants/httpd.service -> /usr/lib/systemd/system/httpd.service
**而 要检测 httpd这些服务 是否是 开机启动, 需要用命令: ` sytemctl is-enable serviceName.service **
**在用root 身份修改的/var/www/html目录的权限为 -rwxrwxrwx 后, 以普通用户创建的文件, 其所有权 还是属于 该 普通用户, 而不是属于root的, 模式也是默认的 664 **
感觉这次安装后, ff特别容易卡, 假死, 所以考虑禁用一些服务和进程, 使用到两个命令: 一个是 ps -aux 和 netstat, 查看, 杀死和禁用进程/服务: kill -9... 和 systemctl disable...
一般情况下可以关闭的服务:
chkconfig --level 2345 autofs off
chkconfig --level 2345 acpid off
#chkconfig --level 2345 sendmail off
chkconfig --level 2345 cups-config-daemon off
chkconfig --level 2345 cups off
chkconfig --level 2345 xfs off
chkconfig --level 2345 lm_sensors off
chkconfig gpm off
chkconfig openibd off
chkconfig iiim off
chkconfig pcmcia off
chkconfig cpuspeed off
chkconfig nfslock off
chkconfig ip6tables off
chkconfig rpcidmapd off
chkconfig apmd off
chkconfig arptables_jf off
chkconifg microcode_ctl off
chkconfig rpcgssd off
chkconfig NetworkManager off
===============================================
关于 systemd和target: 参考: https://www.cnblogs.com/lxjshuju/p/7183689.html
pem是: privacy enhanced mail: 隐私增强的邮件
是一种协议, 是opensll和nss使用的一种加密协议, 里面包括证书+秘钥 (可以在java中读取.pem格式文件中的 PrivateKey)
OpenSSL 使用 PEM 文件格式存储证书和密钥。PEM 实质上是 Base64 编码的二进制内容,再加上开始和结束行,如证书文件的----BEGIN CERTIFICATE-----和-----END CERTIFICATE-----
在这些标记外面可以有额外的信息,如编码内容的文字表示。文件是 ASCII 的,可以用任何文本编辑程序打开它们。
=======================================
安装的mariadb数据库,除了名字和服务名称是mariadb之外,其他操作基本上还是使用的 mysql
使用MySQL -uroot -p登录出现找不到 /var/lib/mysql/mysql.sock问题。
- 当然首先是要 看 mysqld或 mariadb这个服务是否起来了
- 原因是: 用rpm安装的,默认的socket是安装在 /tmp/mysql.sock, 但是mysql启动的时候, 是要到/var/lib/mysql目录下去找 mysql.sock这个套接字的。
所以:可以用如下命令登录:mysql -p --socket=/tmp/mysql.sock
或者为mysql.sock增加软连接 ln -s /tmp/mysql.sock /var/lib/mysql/mysql.sock
SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'
kill killall pkill 的区别?
用kill来杀死某一个进程, kill,加选项-9,加PID,表示杀死进程编号为PID的这个进程
用 killall 杀死一类进程,即某个服务的所有进程
killall,加选项-9,加服务名, 表示杀死该服务的所有进程 (相当于杀死进程树) [root@localhost ~]# killall -9 httpd
用pkill踢出某个终端:
pkill,加选项-9,加终端号,表示踢出该终端 [root@localhost ~]# pkill -9 pts/0
**实际上,现在的登录终端,都是虚拟终端了:即pt: pts/0: pseudo terminals /0: (其中,pts是复数形式的) **
mysql和mysqld的区别?
-
mysql -- mysql is a command-line client for executing SQL statements interactively or in batch mode.
-
mysqld -- mysqld is the MySQL server.
daemon: ae===ea i:
==================
关于软硬链接?
= 硬链接是对同一个 inode的文件在不同的地方创建链接. 文件名可以不同, 但是文件内容是一样的, 因为kernel是通过 inode 来读取文件内容的, 而不是通过文件名来读取的. 硬链接是使用的 "链接计数" 来管理的, 删除一个硬链接, 只是使链接计数减1, 只有当文件的链接计数等于0, 才会真的删除该文件
= 硬链接不能针对目录, 不能跨 分区(不能跨文件系统) 比如: ln /home/foo /opt/foo-hardlnk
由于/home是/dev/sda2分区中的, 而 /opt?foo-hardlnk是 /dev/sda4分区中的, 跨分区不能创建硬链接, 所以会提示: invalid cross-device link.
= 不管是硬链接还是 软链接 , 都 不会另外创建一份 文件的 副本, 不会复制. 当copy 复制的时候 那个不叫链接, 那是两个完全不相关的文件.
fedora高版本都只提供了 64位的系统,虽然ff57后只提供了 quantum, 只允许 webextensions的架构扩展, 以前的扩展很多不能使用了, 但是可以保持使用低版本的ff比如ff 50.0的版本
还好的是, 使用低版本的fedora, 其对应低版本的、原始的软件仓库还是保持可用的,在everything中,还能保持一些软件、组件的更新
一般在函数中使用 下划线, 如get_attr(), 而以下划线开头的函数 一般是 系统内部的函数,如 __construct等等, 而应用程序中使用 的函数则在中间用下划线, 命令中一般使用横线
命令的选项使用横线的是 Sys V 风格 而不使用横线的是BSD 的风格
单个横线后面的选项用 字符, 而两个横线后面的选项用 单词,比如:
不能安装 vim? 是因为conflict? 是vi的版本过低造成的,解决方法是更新vi:
Downloading Packages:
[SKIPPED] vim-enhanced-7.4.1868-1.fc23.i686.rpm: Already downloaded
[SKIPPED] gpm-libs-1.20.7-7.fc23.i686.rpm: Already downloaded
[SKIPPED] vim-common-7.4.1868-1.fc23.i686.rpm: Already downloaded
[SKIPPED] vim-filesystem-7.4.1868-1.fc23.i686.rpm: Already downloaded
[SKIPPED] perl-libs-5.22.2-355.fc23.i686.rpm: Already downloaded
[SKIPPED] perl-5.22.2-355.fc23.i686.rpm: Already downloaded
先前dnf安装软件出错的时候, 下载下来的包packages 并不会被删除, 而是保持在dnf的 cache(缓存中), 所以, dnf clean cache(清除缓存, 就是 删除dnf先前下载来的 安装包)
所以再次安装的时候, 这些已经下载的包就会被 skipped. 因为已经被下载: already downloaded.
但是要注意, 一旦 进行了其他dnf的操作, 而且成功了的话, 原来的缓存(的packages) 将被 删除, 或者说被覆盖, 从而换成了新的缓存, 而要安装之前的包的话, 又得重新下载.
2:7.4.1868-1.fc23
Running transaction
Upgrading : vim-minimal-2:7.4.1868-1.fc23.i686 1/2
Cleanup : vim-minimal-2:7.4.827-1.fc23.i686 2/2
Verifying : vim-minimal-2:7.4.1868-1.fc23.i686
/etc/vimrc其中的bs 是: backspace "退格删除键"的缩写: https://blog.csdn.net/u013595419/article/details/50443530
参考: bashrc和 profile的区别 ?
https://blog.csdn.net/linuxnews/article/details/52579186
目录的硬链接是 包含的子目录数+2, 这个2是指(.和..) 因为 .点号是指这个目录本身, 而.. 是指它包含的子目录 的父目录将指向它, 所以即使目录为空, 他的硬链接数也是2, 但是包含的普通文件 数目不会 加在 这个 硬链接数目上.
- 创建硬链接的目的, 是 为了 给 重要文件备份, 防止重要文件丢失.
- 一般系统的配置 放在 /etc下, 而用户级 的配置 放在 ~ 目录下, 而且 以点文件命名, 比如 .vim, .virc, .vimrc, .bashrc, .bash_profile等
=================
什么是 s类型的文件? 要注意和 setuid特权相区别, s文件类型的s符号是在 第一个符号, 特权的s是在 r, w的后面,是在 原来的x位置上.
ll /var/lib/mysql/mysql.sock 看到的属性是:
srwxrwxrwx 1 mysql mysql 0 11-21 14:39 /var/lib/mysql/mysql.sock
档案类型标志是s, 这个是资料接口档, 是套接字文件(sockets),这种文件一般用在网络上的资料套接,mysqld守护进程生成了这个文件,其他与mysql相关的程序想使用mysql服务器,估计就是通过这个文件了。 这种特殊文件即使是最高权限的root用户,也是不能查看不能编辑的,有点像档案标志是p的管道文件。
lpk.dll是什么文件?
本身是在 c:\windows\system32\下的dll文件, 很多应用程序都需要应用它, 所以是一种常见的病毒文件, 主要是感染 包含有 exe可执行文件的目录, 在这个目录下生成这个目录的快捷方式
- 在windows下的病毒, 通常不能在linux下运行, 因为这些病毒需要 windows下的函数/头文件/接口/动态库等等运行环境, 而linux下是没有这些接口interface和动态库的,所以是不能运行的,不能对linux造成损害.相反, 在linux下可以查看/删除这些win下的病毒.
三种时间atime, mtime, ctime如何区别?
查看 ls --help的帮助文档, 可以很清楚 : ls 默认显示的时间 是 modifying time 修改时间.
--time=atime/access/use(或者直接使用 -u参数)表示 显示 文件的 访问时间.
--time=ctime/status(或直接使用-c)表示的是 显示文件的 改变时间(主要是状态/属性的改变) : 比如用 chmod, chown等命令 就会 改变 ctime.
-time=atime是指最后 "访问"的时间, 是指 确实 读取 了文件内容的. 包括: cat命令, 但是像: vi , head, tail, stat 但是 用 vi 如果没有修改文件, 则atime和ctime 和mtim等都不会变化, 但是 如果用vi修改了文件的内容, 则 atime, ctim, mtime等 都将发生改变.
ls 可以排序, 用 --sort=none, time, size, extension, version (或者用简写), 要注意 ls的排序都是 倒序: 即 largest first, newest first./...
[lee@localhost ~]$ ls --sort=atime
ls: invalid argument ‘atime’ for ‘--sort’
Valid arguments are:
- ‘none’
- ‘time’
- ‘size’
- ‘extension’
- ‘version’
用 stat命令, 可以 非常清楚的 看到 文件的 三个 时间 和 各种 状态!
============================
it was quite a lucrative sideline:
sideline: 兼职, 业余, lucrative: 收益大的, 有钱赚的
sign: [sain] resign: [ri'sain'] 辞职, resignation [rezig'neis2n] 是名词, resignation letter 是 辞职信.
he was under pressure to resign and was about to be sidelined
it now seems only a matter of time before they resign.
bad password : 并不是 错误密码, 他是指 密码的 "质量不高", 但是在命令行 还是 可以设置和接受的.
authentication & authorization的区别?
- authentication是认证的意思, 表示 "某人确实是某人"的意思, 比如登机的 张三的 passport护照, 证明你确实是张三;
又比如: 在 su -c '....' 执行某个命令的时候, 需要root 权限, 就要证明你确实是 root 用户, 输入密码, 那么这个也是 authentication. - authorize是授权, 是指某个用户 具有那些权力, 比如登机时你的机票 就让你 有 登机的 authorize了
修改密码成功后, 会提示: all **authentication tokens ** updated successfully. 认证令牌/认证牌牌.
- 用户的真实权限其实是由 uid来决定的: uid=0就是 root权限; uid=1~499 就是 伪用户(是bin/halt, daemon, apache, mail等用户, 这些是用来 管理启动系统和进程/服务等的伪用户, 伪用户是不能/不需要登陆系统的, 是没有宿主目录的)
systmctl list-units的内容有哪些?
- 映射点 *.mount, 包括 -.mount 这个是 挂载 根目录/, home.mount 是挂载 /home目录的.
- 服务service, 目标target, 设备device等等.
- 这个命令,就相当于 win 的 服务控制台: services.msc
给命令文件增加 set_uid属性?
- setuid是一种unix函数, set_uid是一种属性, 就是 将命令的 "所有者执行位x"权限, 变成 "s"权限.
- 所以 set_uid属性的设置就是 使用
chmod u+s /usr/bin/some_command
当 文件的属性被 设置成 set_uid后, 文件名 就变成 "红底白字" - 三个id: 命令文件的所有者的uid, 启动这个命令的用户的id, 这个叫 真实的用户id : ruid , 这个命令运行时的有效用户id: euid
- 而linux内核 决定某个进程的权限时, 是以这个进程的 有效用户id 来决定的, 所以, 如果具有 set_uid属性的命令以普通用户运行时, 它将具有 这个命令的所有者 具有的权限(就是 以命令的所有者的身份 来运行的)
- 但是要注意, set_uid的权限 只是 影响 创建文件的所有者, 并不影响 被创建文件的 所属组.
如何禁用 linux上的不必要的服务
bluetooth服务?
[lee@localhost ~]$ su -c 'systemctl disable bluetooth.service'
Password:
Removed symlink /etc/systemd/system/bluetooth.target.wants/bluetooth.service.
Removed symlink /etc/systemd/system/dbus-org.bluez.service.
[lee@localhost ~]$
crond: 是linux的 调用计划任务 的daemon, 它通过 crontab 来实现. 系统会自动安装 crond服务, 而且 会 "每隔 1分钟" 就会去检查 是否有任务计划要执行, 这个 真的很伤资源的, 所以必须禁用这个服务!
[root@localhost lee]# systemctl disable crond
Removed symlink /etc/systemd/system/multi-user.target.wants/crond.service.
[root@localhost lee]#
cups服务是 打印服务
[lee@localhost ~]$ systemctl disable cups.service
Removed symlink /etc/systemd/system/printer.target.wants/cups.service.
Removed symlink /etc/systemd/system/sockets.target.wants/cups.socket.
Removed symlink /etc/systemd/system/multi-user.target.wants/cups.path.
[lee@localhost ~]$
atd服务是 定时任务的服务
[root@localhost lee]# systemctl disable atd
Removed symlink /etc/systemd/system/multi-user.target.wants/atd.service.
[root@localhost lee]#
libvirtd.service loaded active running Virtualization daemon 这个是 提供 虚拟化技术的daemon
[root@localhost lee]# systemctl disable libvirtd
Removed symlink /etc/systemd/system/multi-user.target.wants/libvirtd.service.
[root@localhost lee]#
ModemManager.service loaded active running Modem Manager modem调制解调器的daemon
[root@localhost lee]# systemctl disable ModemManager
Removed symlink /etc/systemd/system/dbus-org.freedesktop.ModemManager1.service.
Removed symlink /etc/systemd/system/multi-user.target.wants/ModemManager.service.
[root@localhost lee]#
nfs-config.service loaded active exited Preprocess NFS configuration
[root@localhost lee]# systemctl disable nfs-config.service
[root@localhost lee]#
=========================================
df和du : df: disk free(查看磁盘剩余空间), du(disk usage[ju:sid3]) 是查看文件//目录的占用空间.
df是查看磁盘空间使用情况, 看所有 已挂载/mount的 文件系统 还有多少空间可以使用? df -h主要是用来查看 大文件的; df -i是以inode(index node索引结点)的角度来看的(主要是看 过多的 小文件) . 这两者 都 不能 使用 过多. 都不能 占用百分比过大
du disk usage
: df 可以看到 被删除的文件但是还没有被释放的空间, 所以 有时候df和du的结果有出入
: inode 的总数, 是 在 分割磁盘扇区的时候, 就分配了的大量的 inode. 这些inode就等着今后分配给文件/目录供挂载使用. 使用 同样的磁盘空间, 如果小文件越多, 就需要越多的 inode 来挂载.
top 也是用来 查看进程的, test of process进程查看/进程检查. 相当于 win的进程管理器
同时也可以看到 linux的命令 都是 简单的单词, 或者单词缩写, 可以 跟 win下的相关对应命令相比较.
注意表单中 使用 col-sm-...跟纯粹 使用栅格系统中使用 col-sm-xxx的区别?
栅格系统中使用 col-sm 要 用 div.container > div.row > 才能 使用 col--
而 表单中 使用 col-sm-xx 则不需要这样 完整的 结构了:
可以认为:
- form 就是 .container
- 而 其中的 .control-group 就相当于 .row
- 所以 form表单中使用 的时候, 就不再需要.container 和 .row 了. 按照表单中的 结构 写就好了
==================================
对一些有强大生态系统的现代语言. 比如php, python等, 里面的很多软件都不再是孤立的了, 而是做成库, 做成dll/so/链接库等, 进行相互借鉴/引用, 而不重复开发相同单元.
为了便于管理这些单元 , 解决各个软件/单元之间的相互包含/引用/依赖关系, 都开发了各种"包管理工具", 比如: linux的yum/dnf, php的包管理工具composer, python的包管理工具: pip 只需要在项目中, 写上你需要的包/库名称, 其他 依赖单元的 查找, 下载, 安装/卸载等工作, 就全部由 包管理工具去负责.
- 安装好包管理工具后, 再安装其他相关的包/库, 就直接用包管理工具来 安装了, 比如;
pip install foo-pakg, pip search foo-pkg , composer install bar-pkg
等等.