linux

更新日期: 2016-04-22 阅读次数: 12494 分类: Linux

People disagree with me. I just ignore them. -- Linus Torvalds (regarding the use of C++ for the Linux kernel.)

File size change when copied with scp

http://www.linuxforums.org/forum/newbie/188379-file-size-change-when-copied-scp.html

md5sum is an excellent indication.

Consider a 9K file. On a disk formatted with 4K block size, it will take 3 blocks which is 12K. On a machine with 8K blocks the same file will only take 2 blocks but 16K. This may be part of what's happening.

查看 block size 的方法:

sudo tune2fs -l /dev/sda1 | grep "Block size"

自从开始Linux 软件平台开发,经常遇到“Block Size”。但经常发现此block size非彼block size。意义不一样,大小值也不一样。Open Source的东东有时候也挺烦的。下面是自己的总结。通常Linux的“block size”指的是1024 bytes,Linux用1024-byte blocks 作为buffer cache的基本单位。但linux的文件系统的block确不一样。例如ext3系统,block size是4096。使用tune2fs可以查看带文件系统的磁盘分区的相关信息,包括block size。

查看搜索二进制程序中的字符串

My first thought was that there must be list of authoritative WHOIS servers somewhere on the Internet. I checked the "whois" command on my Linux machine to see if it was using a built in list or something else:

> strings whois | grep whois | less
* whois.corenic.net
* whois.denic.de
* whois.cat
* whois.nic.ad.jp
* whois.jprs.jp
* whois.arin.net
* whois.nic.mil

产看当前目录下所有目录所占用的磁盘空间

du | sort -nr | less

fail to run "sudo cat hosts>>/etc/hosts"

permission denied

http://www.linuxquestions.org/questions/linux-software-2/sudo-and-permission-denied-651619/

sudo sh -c "cat hosts>>/etc/hosts"

为 GITLAB 生成 pub key

SSH key allows you to establish a secure connection between your computer and GitLab

To generate a new SSH key just open your terminal and use code below.

$ ssh-keygen -t rsa -C "<your-email>"

Creates a new ssh key using the provided email

Generating public/private rsa key pair...

Next just use code below to dump your public key and add to GitLab SSH Keys

$ cat ~/.ssh/id_rsa.pub

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....

这里需要注意的是,默认情况下需要保证 key 的名字为 id_rsa 。换成其他名字无法识别。

应该有参数在 git 操作时制定key。

添加一个管理员账号

Ubuntu 12.04

=== 正确的做法 ===

  1. 添加一个普通用户 $ useradd username 如果需要创建用户根目录, 并指定 shell $ useradd -d /home/username -s /bin/bash -m username
  2. 设置登陆密码 $ passwd username
  3. 将用户添加到管理员组 $ usermod -a -G sudo username

tips: 使用 adduser 命令可以以交互式的方式添加用户。

查看一个用户所属的组: $ groups username

=== 丑陋的做法 ===

直接修改 /etc/sudoers, 增加两行 ## Allows just user "username" to run all commands as root username ALL=(ALL) ALL

丑陋之处在于,如果有成百上千的用户需要添加,这个文件就难以维护

=== 不正确的做法 === 修改 /etc/passwd, 增加 username:x:0:502::/home/username:/bin/bash

即将 account ID 设置为 0, 这样,你就创建了一个可以把 root 用户剔除的用户。

参考: http://serverfault.com/questions/58378/add-new-user-with-root-access-in-linux %% }}}

sudo group 和 admin group 的区别

实际上是等同的。

Ubuntu 12.04 新加入了 sudo group;admin 是为了兼容之前的叫法,所以保持了下来。

参考: http://askubuntu.com/questions/43317/what-is-the-difference-between-the-sudo-and-admin-group

如何查看,CPU 的核数

Ubuntu 12.04

$ cat /proc/cpuinfo

里面有几个 processor, 就代表有几个核。

核数过多的情况下,可以使用

$ grep -c processor /proc/cpuinfo

使用 curl 发送 POST 请求

curl -d "name=zhongwei&sex=male" http://localhost/test
curl https://YOUR-API-KEY@hostedgraphite.com/api/v1/sink --data-binary "conc_users 59"

tips: 返回结果后,命令行提示符会缀在结果后面。看上去很不时尚,解决方法是,在后面缀上 "; echo"

curl -d "name=zhongwei&sex=male" http://localhost/test; echo

发送 DELETE 请求

curl -X DELETE http://localhost/persons/1

发送 PUT 请求

curl -X PUT -d "start_at=2013-04-01&title=test2" http://localhost/news/1

参考:

  • http://curl.haxx.se/docs/manual.html
  • http://stackoverflow.com/questions/12849584/automatically-add-newline-at-end-of-curl-command

kill signal

经常会看到重启一个服务时使用

killall -HUP <process_name>

HUP 的意思是: It restarts the process from the begging (reloading any config files it uses)

开启 ssh 服务

Ubuntu desktop 版本默认不安装 ssh server 服务,即无法在其他机器通过 ssh 登陆该机器。 解决的方法是,安装 openssh-server

$ sudo apt-get install openssh-server

tar

tar -xJf test.tar.xz
gtar xvzf test.tgz 
tar xvjf filename.tar.bz2
tar xvzf test.tar.gz

在 Centos 中设置开机启动项

在 /etc/rc.d/rc.local 中添加需要执行的命令即可。

允许访问指定端口

显示防火墙的现有规则

iptables -L

开放指定端口,例如 8081

iptables -A INPUT -p tcp --dport 8081  -j ACCEPT

参考:

  • https://help.ubuntu.com/community/IptablesHowTo

查看上次系统重启时间

$ last reboot

检索历史操作

$ history | grep kill

最近常用命令统计

story | awk '{CMD[$2]++;count++;} END { for (a in CMD )print CMD[a] " " CMD[a]/count*100 "% " a }' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n10
 1  134  26.8%  ls
 2  61   12.2%  cd
 3  56   11.2%  dig
 4  46   9.2%   vim
 5  34   6.8%   git
 6  33   6.6%   exit
 7  17   3.4%   whois
 8  14   2.8%   ssh
 9  10   2%     rm
10  10   2%     compass

mail 的基本操作

  • z 下一页
  • z- 上一页

Centos 上安装 pysqlite 模块

ImportError: No module named pysqlite2

yum install sqlite-devel -y
pip install pysqlite

ImportError: No module named _sqlite3

$ find /usr -name _sqlite3.so      
/usr/lib64/python2.6/lib-dynload/_sqlite3.so
cp /usr/lib64/python2.6/lib-dynload/_sqlite3.so /usr/local/python/lib/python2.7/sqlite3/

动态产看当前建立的连接

watch -n 1 -d 'netstat -nap | grep 80 | grep EST'

which processes are using your swap

  • http://lserinol.blogspot.fr/2013/05/which-processes-are-using-your-swap.html

查看一个域名的整个跳转过程

curl -vL sunzhongwei.com

重复执行 N 次

for i in {1..5}; do echo hello; done

如果是后台执行:

for i in {1..5}; do nohup curl localhost:8888 >/dev/null 2>&1 & done

注意: & 符号和 ; 重复了,所以省去 & 后面的 ;

参考:

  • http://stackoverflow.com/questions/6904505/fire-a-multi-curl-request-and-dont-wait-for-the-response-php
  • http://stackoverflow.com/questions/6666245/running-bash-pipe-commands-in-background-with-ampersand

使用 netcat 发送 TCP/UDP 数据包

  • TCP -> echo "YOUR-API-KEY.conc_users 1.2" | nc carbon.hostedgraphite.com 2003
  • UDP -> echo "YOUR-API-KEY.conc_users 59" | nc -uw0 carbon.hostedgraphite.com 2003

目录权限问题

IOError: [Errno 13] Permission denied: '/var/log/app.log'

$ sudo chown -R zhongwei:zhongwei /var/log/app.log

找出最大的文件/目录

文件:

find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

目录:

find . -type d -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

参考:

  • http://superuser.com/questions/9847/linux-utility-for-finding-the-largest-files-directories

Ubuntu 下解压 7z 压缩包

sudo apt-get install p7zip-full
7z x something.7z

查看系统上次重启的时间

$ last reboot | less

reboot   system boot  3.13.0-74-generi Sat Apr 16 20:03 - 00:35 (2+04:31)  
reboot   system boot  3.13.0-74-generi Wed Apr 13 00:25 - 00:35 (6+00:09) 

获取一个文件的全路径

readlink -f <some_file>

领取618阿里云/腾讯云服务器优惠券

关于作者

我是来自山东烟台的一名开发者,喜欢瞎折腾,顺便记记笔记。有敢兴趣的话题,欢迎加微信 zhongwei 聊聊。 白天写程序,晚上哄熊孩子,可能回复有点慢,见谅。 查看更多联系方式

相关文章

爱评论不评论

近期节日

2020年06月05日 世界环境日
2020年06月05日 芒种
2020年06月06日 全国爱眼日
2020年06月11日 中国人口日
2020年06月20日 世界难民日
2020年06月21日 父亲节
2020年06月21日 夏至
2020年06月22日 中国儿童慈善活动日
2020年06月23日 国际奥林匹克日
2020年06月25日 全国土地日
2020年06月25日 端午节
2020年06月26日 国际禁毒日
查看更多节日