Ubuntu/Linux知识点(笔记)

系统方面

  • Ubuntu Desktop(Ubuntu桌面环境):sudo apt-get install ubuntu-desktop
  • Ubuntu图形化apt包管理工具synaptic:sudo apt-get install synaptic
  • 安装gdebi以便使用.deb安装包
  • 运行 sudo wget -r -p -np -k http://www.test.com,会生成目录 www.test.com,并把整站内容下载到这个目录下。

Hash Sum mismatch问题

在update的时候,总会有那么几个失败的,其中Hash Sum mismatch错误很常见,它的原因是由于你所使用的网络的供应商设置了透明缓存导致你获取的源并不是最新的,导致更新失败,对于最近更新的包缓存不及时就会出现这样的问题,而且自己添加的源更容易出现这个问题,目前的解决方法要么是你用移动网络更新(流量啊),要么是自己设置代理。

怎样开启 apt-get debug

apt-get update -o Debug::Acquire::http=true

关于Coding

  • Sublime编辑器默认不支持中文输入法
  • 默认文本编辑器gedit(GNOME桌面下)支持很多插件,方便Coding

MySQL问题

  • Linux下使用的MySQL驱动不同于Windows(原来的叫libmysql,用于Linux;后来的叫mysqlnd,因为认证问题重做的,用于win),使得mysqli_fetch_all()函数无法使用,要么重装MySQLi模块,使用mysqlnd驱动,要么自己写遍历。
  • 在传输string的时候会因为特殊字符出现问题,常用的函数有htmlspecailchar(),专门用于sql语句的函数mysqli_real_escape_string(),在输出的时候为了保持格式不变化,可以使用
    标签:echo "
    ".htmlspecialchars($string)."
    "
    ;
  • 使用define定义常量时会报notice错误,要加抑制符@define(db_host,“localhost”);

不要只用apt-get clean清理包

apt-get clean会删除所有的缓存包,但是有的时候还是想清理更多,就压用到apt-get autoremove:清理之前安装 包时所需要的,但是现在不需要的依赖包。

Hash Sum mismatch问题

在update的时候,总会有那么几个失败的,其中Hash Sum mismatch错误很常见,它的原因是由于你所使用的网络的供应商设置了透明缓存导致你获取的源并不是最新的,导致更新失败,对于最近更新的包缓存不及时就会出现这样的问题,而且自己添加的源更容易出现这个问题,目前的解决方法要么是你用移动网络更新(流量啊),要么是自己设置代理。

Terminal小技巧

利用Terminal循环输出字符串:

$ for i in `seq 121 150`; do echo "(SELECT controller_id,visit_time FROM visit_log WHERE controller_id = $i ORDER BY visit_time DESC LIMIT 1)"; echo "UNION"; done
输出:
(SELECT controller_id,visit_time FROM visit_log WHERE controller_id = 121 ORDER BY visit_time DESC LIMIT 1)
UNION
(SELECT controller_id,visit_time FROM visit_log WHERE controller_id = 122 ORDER BY visit_time DESC LIMIT 1)
UNION
(SELECT controller_id,visit_time FROM visit_log WHERE controller_id = 123 ORDER BY visit_time DESC LIMIT 1)
UNION
(SELECT controller_id,visit_time FROM visit_log WHERE controller_id = 124 ORDER BY visit_time DESC LIMIT 1)
UNION
(SELECT controller_id,visit_time FROM visit_log WHERE controller_id = 125 ORDER BY visit_time DESC LIMIT 1)
UNION
(SELECT controller_id,visit_time FROM visit_log WHERE controller_id = 126 ORDER BY visit_time DESC LIMIT 1)
UNION
(SELECT controller_id,visit_time FROM visit_log WHERE controller_id = 127 ORDER BY visit_time DESC LIMIT 1)
UNION
(SELECT controller_id,visit_time FROM visit_log WHERE controller_id = 128 ORDER BY visit_time DESC LIMIT 1)
UNION......

如何配置Git/SSh公钥

  • 首先sudo apt-get update/upgrade一下更新软件,然后sudo apt-get install git安装Git
  • 接下来找到SSH目录,SSH是默认安装好的,cd ~./.ssh有可能有人看不懂,~是home目录,下面有很多隐藏文件,cd到其中的.ssh目录下,默认只一个known_hosts用来存放已知的主机,我们需要生成SSH key;
  • 使用ssh-keygen来生成密钥,中间会有几次询:1.输入存放位置(默认/root/.ssh/id_rsa)2.输入passphrase,这个是每次SSH请求都会加一个密码验证,3.再次输入。(该命令可以添加参数-C "xxxxxxxx",添加备注)
  • 完成之后目录下会生id_rsaid_rsa.pub,其中带.pub后缀的为公钥,是我们要用的,复制到github上即可正常的访问项目了
  • 直接在阿里云给的终连接可能会有诸多的不便,所以还是要使用终端远程连接的,Windows下用Xshell即可,Linux下直接用命令行ssh root@IP即可,这时之前提到的known_hosts起作用了,如果你没有把要连接的ip放进去,就会有询问,确定之后会自动加到里面。
  • 这时可以连接好了之后可以远程管理服务器了,设置一些个性化设置也不会影响服务器本身,使用完直接打exit即可退出。

/var/log问题

问题描述: auth.log每隔几分钟就会有内容进来:

Oct 22 09:09:01 Tianyi CRON[12577]: pam_unix(cron:session): session opened for user root by (uid=0)
Oct 22 09:09:01 Tianyi CRON[12577]: pam_unix(cron:session): session closed for user root

这是因为有cron定时程序执行导致的,为了不让它出现在日志里,采取以下办法:

这可能是cron调用sendmail的测试连通性任务,或者查收邮件?总之和sendmail有关。
关掉方法:
sudo vi /etc/pam.d/common-session-noninteractive
文件结尾附件找到
session required        pam_unix.so
在其前面加上:
session     [success=1 default=ignore] pam_succeed_if.so service in cron quiet use_uid
保存。
重启cron任务:
sudo service cron restart
这下auth.log清净了不少。。。

你可能感兴趣的:(Linux,还没写好)