linux入门简介
GNU
GNU为GUN is not unix的缩写,是一个类似Unix的操作系统,由Richard Stallman在1983年9月发起。由于目前其内核hurd尚未完全完成,
实际多半使用linux、freeBSD等内核作为GNU的hurd的替代方案。
1985年Richard Stallman成立FSF(free software foundation),为GNU提供技术、法律、财政的支持。GNU大部分由个人自愿无偿贡献,一些商业公司也开始介入开发和技术支持。
GNU三个协议和许可证:
GPL:GNU通用公共许可证(GNU General Public License)
LGPL:GNU较宽松公共许可证 (GNU Lesser General Public License), ) ,旧称 GNU Library General Public License(GNU 库通用公共许可证);
GFDL:GNU自由文档许可证(GNU Free Documentation License )的缩写形式。
这里指的自由,并不是价格免费,这和价格无关而是使用软件对所有的用户来说是自由的。GPL过如下途径实现这一目标:
1.它要求软件以源代码的形式发布,并规定任何用户能够以源代码的形式将软件复制或发布给别的用户。
2.如果用户的软件使用了受 GPL 保护的任何软件的一部分,那么该软件就继承了 GPL 软件,并因此而成为 GPL 软件,也就是说必须随应用程序一起发布源代码。
3.GPL 并不排斥对自由软件进行商业性质的包装和发行,也不限制在自由软件的基础上打包发行其他非自由软件。
由于GPL很难被商业软件所应用,它要求调用它的库的代码也得GPL,全部开放,并且一同发布,不能直接连接。所以后来GNU推出了LGPL许可证
在GPL与LGPL许可证保护下发布源代码的结果很相似,对旧代码所做的任何修改对于想知道这些代码的人必须是公开的,唯一真正的不同之处在于私人版权代码是否可以与开放源代码相互连接,LGPL允许实体连接私人代码到开放源代码,并可以在任何形式下发布这些合成的二进制代码。
只要这些代码是动态连接的就没有限制。(使用动态链接时,即使是程序在运行中调用函数库中的函数时,应用程序本身和函数库也是不同的实体)
主条目:GNU软件包列表
该系统的基本组成包括GNU编译器套装(GCC)、GNU的C库(glibc)、以及GNU核心工具组(coreutils),另外也是GNU除错器(GDB)、
GNU二进制实用程序(binutils)的GNU Cashshell中和GNOME桌面环境。GNU开发人员已经向GNU应用程序和工具的Linux移植,现在也广泛应用在其它操作系统中使用,如BSD变体的Solaris,和OS X作出了贡献。
linux OS常用文件夹说明:
linux系统的所有配置文件都在etc目录下, 与windows完全不一样
常用文件夹说明
配置文件在/etc或者/usr/local/etc
库文件在/lib或者/usr/lib或者/usr/local/lib
可执程序在/bin/或者/usr/bin或者/usr/local/bin或者/sbin或者/usr/sbin或者/usr/local/sbin
头文件在/usr/include
文档和其它文件/usr/share或者/usr/local/share
./configure –prefix=/xxx/xxx的作用
当我们自己用源码编译安装软件时,可以通过./configure –prefix=/XXX制定具体的安装目录,在/XXX下会生成/XXX/bin、/XXX/etc、/XXX/include
所有该软件包的文件都会在这个/XXX下面,但是同时也会带来一个问题,当我们直接输入应用程序名,发现该应用并没有启动,因为系统的PATH变量并没有指向我们自定义的软件的/XXX/bin/目录,所以系统找不到相应的启动命令。
解决1:运用绝对路径启动,/XXX/bin/applicationName
解决2:将改bin目录添加到PATH变量中之所以指定安装目录,是为了方便我们完全控制应用程序文件,当我们不需要程序的时候,就直接删除/XXX目录,可以彻底将改软件从linux系统移除。
linux RedHat或者基于rh的CentOS、fedora常用命令
查询系统软件安装命令
列出所有rpm软件包
rpm -qa
列出指定软件包pname的所有文件位置
rpm -ql pname
列出所有软件包,注意与rpm -qa的区别
yum list
列出所有已经安装的软件包
yum list installed
列出指定软件包名pname的可用安装包
yum list pname
列出指定软件包pname的信息,版本、架构、简介、官网等
yum info pname
安装指定软件包pname
yum install pname
yum –config=/etc/yum.conf –installroot=/usr/local/xxx install pname 指定pname软件包的具体安装目录\
yum --config=/etc/yum.conf --installroot=/usr/local/xxx install pname
删除指定软件包
yum remove pname
列出可更新软件包
yum list updates
列出可更新软件包
yum check --update
yum upgrade 列出可更新软件包
yum upgrade
会立即更新所有可以更新的软件包
yum update
用户新建删除命令
新建用户:usradd和addusr要清楚
删除用户:userdel
更改文件所属:chown username filename
更改文件权限:chmod authority filename
压缩和解压缩命令
xz压缩文件方法或命令
xz -z abc.tar如果要保留被压缩的文件加上参数 -k ,即解压后不要删除.xz格式的文件。如果要设置压缩率加入参数 -0 到 -9调节压缩率。如果不设置,默认压缩等级是6.
xz -d xxx.xz
创建或解压tar.xz文件的方法
习惯了 tar czvf 或 tar xzvf 的人可能碰到 tar.xz也会想用单一命令搞定解压或压缩。其实不行 tar里面没有针对xz格的参数比如 z是针对 gzip,j是针对 bzip2。
创建tar.xz文件:只要先 tar cvf xxx.tar xxx/ 这样创建xxx.tar文件先,然后使用 xz -z xxx.tar 来将 xxx.tar压缩成为xxx.tar.xz
解压tar.xz文件:先 xz -d xxx.tar.xz 将 xxx.tar.xz解压成 xxx.tar 然后,再用 tar xvf xxx.tar来解包
查找
find / -name mysql 此命令表示从/目录下,按照文件名的方式查找文件名称中带mysql的文件
hibernate表名大写,mysql表名数据库忽略大小写。
LINUX下的MYSQL默认是要区分表名大小写的
在my.cnf中的[mysqld]下加入一行:lower_case_table_names=1
[client] port = 3306 socket = /var/lib/mysql/mysql.sock default-character-set=utf8 [mysqld] port = 3306 socket = /var/lib/mysql/mysql.sock character-set-server=utf8 basedir=/usr datadir=/var/lib/mysql lower_case_table_names=1 sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [mysql] no-auto-rehash default-character-set=utf8
系统启动服务
系统启动文件都在/etc/rc.d/init.d目录下,/etc/init.d就是前者的链接。
crontab执行计划
Linux crontab和Windows task schedules非常的相似。Crontab可以用来在系统中定期的执行任务。比如:写了一个爬虫需要每天早上八点执行,就可以用到Crontab;安装的Tomcat服务器需要每天凌晨重启一次,也可以使用到Crontab。总之,几乎所有的定时任务,我们都可以通过Crontab这个工具来完成。
安装
yum install cronie
Crontab在Linux上的结构
从左到右依次为:
[分钟] [小时] [每月的某一天] [每年的某一月] [每周的某一天] [执行的命令]
注意:请留意每个选项的取值范围。
如何 添加/编辑 Crontab
- 添加或更新crontab中的命令
crontab -e
默认情况下,系统会编辑当前登录用户的crontab命令集合。需要编辑其他用户的命令集合,需要使用到如下的命令
crontab -u username -e
查看Crontab命令集合
- 查看当前系统登录用户的Crontab命令集合
crontab -l
- 查看其他用户的Crontab命令集合
crontab -u username -l
20个超实用的Crontab使用实例
- 每天 02:00 执行任务
0 2 * * * /bin/sh backup.sh
- 每天 5:00和17:00执行任务
0 5,17 * * * /scripts/script.sh
- 每分钟执行一次任务
通常情况下,我们并没有每分钟都需要执行的脚本(默默的想到了12306–)
* * * * * /scripts/script.sh
- 每周日 17:00 执行任务
0 17 * * sun /scripts/script.sh
- 每 10min 执行一次任务
*/10 * * * * /scripts/monitor.sh
- 在特定的某几个月执行任务
* * * jan,may,aug * /script/script.sh
- 在特定的某几天执行任务,如在每周五、周日的17点执行任务
0 17 * * sun,fri /script/scripy.sh
- 在某个月的第一个周日执行任务
0 2 * * sun [ $(date +%d) -le 07 ] && /script/script.sh
- 每四个小时执行一个任务
0 */4 * * * /scripts/script.sh
- 每周一、周日执行任务
0 4,17 * * sun,mon /scripts/script.sh
- 每个30秒执行一次任务
我们没有办法直接通过上诉类似的例子去执行,因为最小的是1min。但是我们可以通过如下的方法。
* * * * * /scripts/script.sh
* * * * * sleep 30; /scripts/script.sh
- 多个任务在一条命令中配置
* * * * * /scripts/script.sh; /scripts/scrit2.sh
每年执行一次任务
@yearly 类似于“0 0 1 1 *”。它会在每年的第一分钟内执行,通常我们可以用这个发送新年的问候。
@yearly /scripts/script.sh
- 每月执行一次任务
@yearly /scripts/script.sh
- 每周执行一次任务
@yearly /scripts/script.sh
- 每天执行一次任务
@yearly /scripts/script.sh
- 每分钟执行一次任务
@yearly /scripts/script.sh
- 系统重启时执行
@reboot /scripts/script.sh
- 将 Cron 结果重定向的特定的账户
默认情况下,cron 只会将结果详情发送给 cron 被制定的用户。如果需要发送给其他用户,可以通过如下的方式:
# crontab -l
MAIL=bob
0 2 * * * /script/backup.sh
- 将所有的 cron 命令备份到文本文件当中
这是一个当我们丢失了cron命令后方便快速的一个恢复方式。
下面是利用这个方式恢复cron的一个小例子。(看看就行~)
首先:检查当前的cron
# crontab -l
MAIL=rahul
0 2 * * * /script/backup.sh
然后:备份cron到文件中
# crontab -l > cron-backup.txt
# cat cron-backup.txt
MAIL=rahul
0 2 * * * /script/backup.sh
接着:移除当前的cron
# crontab -r
# crontab -l
no crontab for root
恢复:从text file中恢复
# crontab cron-backup.txt
# crontab -l
MAIL=rahul
0 2 * * * /script/backup.sh
centos7防火墙
2.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前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
3.配置firewalld-cmd
查看版本: firewall-cmd –version
查看帮助: firewall-cmd –help
显示状态: firewall-cmd –state
查看所有打开的端口: firewall-cmd –zone=public –list-ports
更新防火墙规则: firewall-cmd –reload
查看区域信息: firewall-cmd –get-active-zones
查看指定接口所属区域: firewall-cmd –get-zone-of-interface=eth0
拒绝所有包:firewall-cmd –panic-on
取消拒绝状态: firewall-cmd –panic-off
查看是否拒绝: firewall-cmd –query-panic
4.开启端口
添加
firewall-cmd –zone=public –add-port=80/tcp –permanent (–permanent永久生效,没有此参数重启后失效)
重新载入
firewall-cmd –reload
查看
firewall-cmd –zone= public –query-port=80/tcp
删除
firewall-cmd –zone= public –remove-port=80/tcp –permanent