Python3 中的单*和双**

Python3编程中会碰到单*和双**的情况,咋一看,会以为是C语言中的指针和二级指针,其实则不然。
以下我们示例介绍单*和双**的使用场景

常规单*和双**

单*,用于乘法或者倍数,如:

print(2*3)          # 数学乘法运算,值为 6
print("="*3)        # 重复,返回 3个"=", 即 "==="

""" 返回结果: 
6
===
"""

阅读全文»

Python3 的参数对象

Python3的函数参数对象,可分为两种类型:

  • 不可变对象:int(整形)、str(字符串)、float(浮点型)、tuple(元组)
  • 可变对象:dict(字典)、list(列表)、 set(集合)

参数是可变对象时,类似于C语言中的指针类型。

阅读全文»

bash和dash的区别(及示例)

什么是bash、dash

Bash(GNU Bourne-Again Shell)是许多Linux平台的内定Shell,事实上,还有许多传统UNIX上用的Shell,像tcsh、csh、ash、bsh、ksh等等。
GNU/Linux 操作系统中的 /bin/sh 本是 bash (Bourne-Again Shell) 的符号链接,但鉴于 bash 过于复杂,有人把 bash 从 NetBSD 移植到 Linux 并更名为 dash (Debian Almquist Shell),并建议将 /bin/sh 指向它,以获得更快的脚本执行速度。Dash Shell比 Bash Shell小的多,符合POSIX标准。
Debian和Ubuntu中,/bin/sh默认已经指向dash,这是一个不同于bash的shell,它主要是为了执行脚本而出现,而不是交互,它速度更快,但功能相比bash要少很多,语法严格遵守POSIX标准。

阅读全文»

Linux获取进程的环境变量

在linux操作系统中,每个进程都有自己的环境变量,我们可以通过一下方法获取进程的环境变量。
1,获得进程的PID
如:获取oninit进程的PID

ps -ef | grep oninit

获取到oninit的进程号有下列

gbasedbt  8492     1  0 May17 ?        00:36:19 oninit -vy
root      8495  8492  0 May17 ?        00:01:23 oninit -vy
root      8496  8495  0 May17 ?        00:00:19 oninit -vy
root      8499  8495  0 May17 ?        00:00:14 oninit -vy
root      8501  8495  0 May17 ?        00:00:20 oninit -vy
root      8503  8495  0 May17 ?        00:00:00 oninit -vy
root      8531  8495  0 May17 ?        00:00:14 oninit -vy
root      8535  8495  0 May17 ?        00:03:14 oninit -vy
...

阅读全文»

SSHFS远程文件系统

为了像本地一样访问远程主机上的目录,通常我们会在远程主机上使用nfs来导出目录,并在本地主机上mount这个nfs文件系统。
但可能我们忽略了一个远程连接最通用的工具:ssh。其实很多和远程有关的行为,基于ssh都能完成,即使是实现像NFS一样的功能。
如何通过ssh来挂载远程目录?需要安装fuse-sshfs包,这个包在epel中提供。使用fuse-sshfs包提供的sshfs工具可以基于ssh直接挂载远程目录,不用像NFS一样还要export。

[root@node1 ~]# yum -y install epel-release
[root@node1 ~]# yum -y install fuse-sshfs

阅读全文»

systemd.timer定时任务

所谓定时任务,就是未来的某个或多个时点,预定要执行的任务,比如每五分钟收一次邮件、每天半夜两点分析一下日志等等。
Linux 系统通常都使用 cron 设置定时任务,但是 Systemd 也有这个功能,而且优点显著。

  • 自动生成日志,配合 Systemd 的日志工具,很方便除错
  • 可以设置内存和 CPU 的使用额度,比如最多使用50%的 CPU
  • 任务可以拆分,依赖其他 Systemd 单元,完成非常复杂的任务
  • 可以设置微秒级的定时任务

阅读全文»

Linux防火墙仅允许指定IP或者IP段访问某个端口

CentOS 7中使用firewall-cmd来设置防火墙。
在防火墙未放通9088端口的情况下,仅允许192.168.80.0/24网段访问9088端口。
使用iptables --list 或者 firewall-cmd --list-all查看现有防火墙策略

iptables --list

firewall-cmd --list-all

如果有放通端口,使用以下指令,关闭端口开放

firewall-cmd --permanent --zone=public --drop-port=9088/tcp

阅读全文»

CentOS 6下(虚拟机)修改IP地址步骤

虚拟机克隆后,CentOS 6的网卡MAC地址将会改成,因些原先配置的网络不可用。
通过以下方法改变IP地址:

1, 获取新的网络接口名称,和MAC地址,如下是eth2和00:0c:29:2f:97:0e

[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:2f:97:0e brd ff:ff:ff:ff:ff:ff
    inet 192.168.80.69/24 brd 192.168.80.255 scope global eth2
    inet6 fe80::20c:29ff:fe2f:970e/64 scope link 
       valid_lft forever preferred_lft forever

注:以上信息是网络修改完成后的结果。

阅读全文»