分类 Linux基础知识 下的文章

Linux 创建交换分区swap的两种方法

一、什么是SWAP

SWAP就是LINUX下的虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间(也就是SWAP分区)虚拟成内存来使用.它和Windows系统的交换文件作用类似。


一般来说,目前根据大多人的一个普遍认知,建议交换内存的大小为物理内存的 1-2 倍。也就是说如果你有 2GB 内存, 那么交换空间大小应该介于2-4 GB。
若系统中没有配置交换分区,当物理内存耗尽后,系统可能会杀掉正在运行中的进程,从而导致系统崩溃。这里就给大家带来两种设置方法:

1.物理硬盘创建swap分区

2.生成swap文件(常用方法)

 

二、方法介绍

方法一:物理硬盘创建swap分区

这里就是在物理磁盘中创建一个分区,用来作为swap交互分区。 通常系统的第一块硬盘会被命名为/dev/vda,同时这块磁盘的分区会命名为/dev/vda1/dev/vda2 等,这里就先假设我们创建了一个/dev/vda3 的分区,并用这个分区来作为swap交互分区。 关于如何分区可以参考之前的文章《CentOS 系统的 VPS 首次如何分区并挂载数据盘》 的部分内容。

使用mkswap命令格式化这个分区:

mkswap /dev/vda3

激活交换分区:

swapon /dev/vda3

最后,将交换分区信息写入fstab文件,以便开机自动挂载:

echo "/dev/vdb3               swap                   swap    defaults        0 0" >> /etc/fstab 

 

方法二:创建swap文件(使用 fallocate 命令)

博主推荐用这种方法,因为这个是最简单、最快速的创建swap交换空间的方法,当然也是最常见的方法了。 

PS:有的同学可能要问为什么不用DD命令? emmm...这个嘛,这是博主最近才来了解的fallocate这个命令,貌似还是比较好用的。其实原理基本都差不多,就是创建一个文件块。

首先使用fallocate命令,创建一个文件:swapfile,文件名称、路径、大小可以自行设置,这里就放在根目录 /  下了。使用命令创建一个2G的文件:

fallocate -l 2G /swapfile

查看下创建的文件大小是否和设置的一致:

ls -lh /swapfile

更改文件的权限:

chmod 600 /swapfile

同样,使用mkswap命令格式化,虽然这个swapfile是个文件,但是我们把它当成是分区来挂载:

mkswap /swapfile

启用激活交换分区:

swapon /swapfile

最后,也是将交换分区信息写入fstab文件,以便开机自动挂载:

echo "/swapfile               swap                   swap    defaults        0 0" >> /etc/fstab 

 

.

linux 文件权限解析

常用权限

linux系统内有档案有三种身份 u:拥有者  g:群组   o:其他人

这些身份对于文档常用的有下面权限:

r:读权限,用户可以读取文档的内容,如用cat,more查看

w:写权限,用户可以编辑文档

x:该目录具有可以被系统执行的权限

其他权限

除了读写执行权限外系统还支持强制位(s权限)和粘滞位(t权限)

s权限

s权限: 设置使文件在执行阶段具有文件所有者的权限,相当于临时拥有文件所有者的身份. 典型的文件是passwd. 如果一般用户执行该文件, 则在执行过程中, 该文件可以获得root权限, 从而可以更改用户的密码.

ls -al /usr/bin/passwd-rwsr-xr-x 1 pythontab pythontab 32988 2018-03-16 14:25 /usr/bin/passwd

我们可以通过字符模式设置s权限:chmod a+s filename,也可以使用绝对模式进行设置:

设置s u i d:将相应的权限位之前的那一位设置为4;

设置g u i d:将相应的权限位之前的那一位设置为2;

两者都置位:将相应的权限位之前的那一位设置为4+2=6。

 

注意:在设置s权限时文件属主、属组必须先设置相应的x权限,否则s权限并不能正真生效(c h m o d命令不进行必要的完整性检查,即使不设置x权限就设置s权限,chmod也不会报错,当我们ls -l时看到rwS,大写S说明s权限未生效)

t权限

t权限:要删除一个文档,您不一定要有这个文档的写权限,但您一定要有这个文档的上级目录的写权限。也就是说,您即使没有一个文档的写权限,但您有这个文档的上级目录的写权限,您 也能够把这个文档给删除,而假如没有一个目录的写权限,也就不能在这个目录下创建文档。 

怎样才能使一个目录既能够让任何用户写入文档,又不让用户删除这个目录下他人的文档,t权限就是能起到这个作用。t权限一般只用在目录上,用在文档上起不到什么作用。 

在一个目录上设了t权限位后,(如/home,权限为1777)任何的用户都能够在这个目录下创建文档,但只能删除自己创建的文档(root除外),这就对任何用户能写的目录下的用户文档 启到了保护的作用。

可以通过chmod +t filename 来设置t权限

 

文章转载自:http://www.pythontab.com/html/2018/linuxkaiyuan_0316/1260.html

 

Shell基本命令学习

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。
​Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。

1:编写shell脚本
vi test.sh#!/bin/bash #指定这个脚本需要什么解释器来执行echo "Hello World !" # echo命令用于向窗口输出文本
2:执行shell脚本
cd入文件存在的目录chmod +x ./test.sh #使脚本具有执行的权限./test.sh #执行脚本
3:Shell变量的理解
例子: your_name="wangzhi.cn"注意:变量名和等号之间不能有空格规则:(1).首字母必须为字母(a-z,A-Z)(2).中间不能有空格,可以使用(_)(3).不能使用标点符号(4).不能使用bash中的关键字(可以使用help命令查看保留关键字)例子:for file in ls /etc 这个语句可以将/etc下目录的文件名循环出来
4:变量的使用
定义变量:your_name = "wangzhi"使用变量:echo ${your_name} # 建议输出变量加上{},养成好的编程习惯.</pre><div style="box-sizing: border-box; font-family: &quot;Microsoft Yahei&quot;, Helvetica, Arial, sans-serif; font-size: 14pt; color: white; background-color: black; border-left: 10px solid red; padding-left: 14px; margin-bottom: 20px; margin-top: 20px; user-select: text !important;"><strong style="box-sizing: border-box; user-select: text !important;">5:Shell字符串(注意注意:下标是从0开始计算的)</strong></div><pre style="box-sizing: border-box; font-family: Monaco, Menlo, Consolas, &quot;Courier New&quot;, monospace; font-size: 13px; white-space: pre-wrap; padding: 9.5px; margin-top: 0px; margin-bottom: 10px; line-height: 1.42857; color: rgb(51, 51, 51); word-break: break-all; word-wrap: break-word; background-color: rgb(245, 245, 245); border: 1px solid rgb(204, 204, 204); border-radius: 4px; user-select: text !important;">单引号:str = &#39;This is a string&#39; (限制:单引号中的任何字符都会原样输出,单引号中无法输出变量;单引号中不能出现单引号)双引号:str = &quot;Hello, I know your are \&quot;${your_name}\&quot;!\n"(双引号内可以有变量;双引号内可以有转义字符)字符串拼接:your_name="qinjx"greeting="hello, "$your_name&quot; !&quot;greeting_1=&quot;hello, ${your_name} !"echo $greeting $greeting_1获取字符串长度:string="abcd"echo ${#string} #输出 4提取字符串string=&quot;alibaba is a great company&quot;echo ${string:1:4} #输出liba,字符串的下标是从0开始的查找子字符串(下标从1开始计算)string="alibaba is a great company"echo expr index &quot;$string&quot; is例如:#!/bin/bashyour_name="wangzhi"echo ${your_name}str=&#39;This is a String&#39;echo &quot;单引号字符串 :${str}" # 拼接都可以这样写,下面的写法是被误导的str2="Hello, I know you are \&quot;${your_name}\&quot;!\n&quot;echo &quot;双引号字符串 : \&quot; ${str2}\&quot;\n"greet="Hello, ${your_name} !&quot;echo &quot;字符串拼接 : \&quot; ${greet}\&quot;\n"echo "获取字符串长度 : \&quot;${#greet}\&quot;\n&quot; # 0~length-1,与java中相同echo &quot;提取字符串 : \&quot;${greet:1:4}\&quot;\n" # 下标从0开始,从1开始计算4个echo "查找子字符串 : \n"echo expr index &quot;${greet} hello&quot; # 下标是从1开始计算的
6:Shell数组(可以存放各种数据类型,下标从0开始)
定义:${数组名[下标]} 例如: valuen = ${array_name[n]}使用@符号可以获取数组中的所有元素,例如:echo ${array_name[@]}获取数组长度:# 取得数组元素的个数length=${#array_name[@]}# 或者length=${#array_name[*]}# 取得数组单个元素的长度lengthn=${#array_name[n]}

 

文章内容参考:https://www.cnblogs.com/wadmwz/p/8811019.html

Centos7/Redhat7 默认firewalld防火墙使用命令

CentOS7默认的firewalld防火墙说实话真不好用,不如使用iptables。SO,博主目前还是喜欢使用CentOS6系列。

毕竟,新的版本在不断更新,目前大多VPS服务器厂商也开始不再提供旧版本的镜像了。万事万物都是有它存在的道理,比如在高级功能方面iptables就要次于firewalld防火墙。所以为了跟得上脚步,博主也开始来学习新的东西。顺便就来水这一篇博文了,做个记录。

  • 基本操作
 # systemctl start firewalld //启动 # systemctl status firewalld //状态 # systemctl disable firewalld //禁用 # systemctl stop firewalld //停止

systemctl是CentOS 7中最重要的一个管理工具,包含了service和chkconfig所有功能,关于这个工具命令,以后有机会再给大家介绍吧。

 # systemctl start firewalld.service //启动某个服务 # systemctl stop firewalld.service //关闭某个服务 # systemctl restart firewalld.service //重启某个服务 # systemctl status firewalld.service //显示某个服务的状态 # systemctl enable firewalld.service //开机时随机自启动 # systemctl disable firewalld.service //禁止开机启动 # systemctl is-enabled firewalld.service //查看是否开机启动 # systemctl list-unit-files|grep enabled //查看已经启动的服列表 # systemctl --failed //查看启动失败的服务列表
  • 基本配置命令firewalld-cmd
 # firewall-cmd --version //查看防火墙版本 # firewall-cmd --help //查看命令操作帮助 # firewall-cmd --state //显示当前状态 # firewall-cmd --zone=public --list-ports //查看所有打开运行的端口 # firewall-cmd --reload //不重启立即加载 # firewall-cmd --list-all-zones | more //查看区域信息情况 # firewall-cmd --get-zone-of-interface=eth0 //查看指定接口所属区域 # firewall-cmd --panic-on //拒绝所有包 # firewall-cmd --panic-off //取消拒绝状态 # firewall-cmd --query-panic //查看是否拒绝

举例,如何打开3306端口 

 # firewall-cmd --zone=public --add-port=3306/tcp --permanent //添加3306端口(--permanent)永久生效,没有此参数重启后失效 # firewall-cmd --reload //不重启立即加载 # firewall-cmd --zone= public --query-port=3306/tcp //查看加入3306端口状态 # firewall-cmd --zone= public --remove-port=3306/tcp --permanent //删除刚刚加入的防火墙规则3306 # firewall-cmd --permanent --remove-icmp-block=echo-request //删除禁ping # firewall-cmd --permanent --add-icmp-block=echo-request //开启禁ping # firewall-cmd --get-service //查看已被允许的信息

更多规则管理可以使用help查看

 # firewall-cmd --help

相关资料:

https://fedoraproject.org/wiki/FirewallD/zh-cn
https://access.redhat.com/documentation/zh-CN/Red_Hat_Enterprise_Linux/7/html/Security_Guide/sec-Using_Firewalls.html
https://www.ibm.com/developerworks/cn/linux/1507_caojh/

 

 

Linux设置系统时间命令

  • 一、命令介绍

这次博主为一些linux新手带来一些常用的基本命令,用于设置linux系统时间。
命令:date、ntpdate

  • 二、date命令

date命令可以用作查看和手动设置系统时间,具体用法如下:
查看系统当前时间:date
设置时间(时间点):date -s "23:18:05"
设置时间(日期):date -s "2018-1-26"
设置完整时间(年月日、时分秒):date -s "2018-1-26 23:18:05"
设置效果如图:
20180126233813.jpg

  • 三、ntpdate命令

ntpdate命令则是用于自动同步网络时间。
命令用法:ntpdate 空格 指定的时间服务器地址
例如:ntpdate time.windows.com
即可自动向时间服务器time.windows.com同步时间。如图,出现:adjust time server 52.163.118.68 offset -0.009404 sec 则表示同步成功。
20180126234824.jpg
当然也可能出现:no server suitable for synchronization found等类似错误,这主要是由于你的vps无法连接到你指定的时间服务器地址导致的,具体原因就不详细说了。更换时间服务器即可。

  • 四、常用的NTP时间服务器

下面列举一些常用的时间服务器地址,你可以根据你的vps服务器所在位置选择相近的服务器来同步获取时间。
常用的NTP时间服务器地址:
time.windows.com 微软
pool.ntp.org
asia.pool.ntp.org
time.nist.gov
time-a.nist.gov
time-b.nist.gov
210.72.145.44 国家授时中心服务器IP地址
cn.ntp.org.cn
edu.ntp.org.cn 教育网
s1a.time.edu.cn 北京邮电大学
s1b.time.edu.cn 清华大学
s1c.time.edu.cn 北京大学
s1d.time.edu.cn 东南大学
s1e.time.edu.cn 清华大学
s2a.time.edu.cn 清华大学
s2b.time.edu.cn 清华大学


Warning: in_array() expects parameter 2 to be array, null given in /www/users/HK1590886/WEB/usr/plugins/TopLamuLeimu/Plugin.php on line 85