LinuxTips9
May 21, 2018
LinuxTips
1. Build maven project
For building the class, do mvn compile
, for building the jar file, do mvn package
, then you could get the jar under the target
folder.
2. sed replace
via following commands:
# sed s/10.168.100.145/192.192.189.1/</home/dash/docker-compose.yml
3. get ip for ubuntu
Ubuntu 14.04 ~ 18.04, via following command:
hostname -I | awk '{print $1}'
4. view systemd logs
via following command:
# journalctl -u service-name.service -b
5. Disable unattended upgrades
Under Ubuntu18.04/16.04, could do :
# systemctl disable unattended-upgrade.service
6. rhel subscription
Via following steps:
sudo subscription-manager remove --all
sudo subscription-manager unregister
sudo subscription-manager clean
Now re-register the system, attach the subscriptions - execute these commands :
sudo subscription-manager register
sudo subscription-manager refresh
sudo subscription-manager attach --auto
Here are the commands to see which repos are enabled and what can be added :
Execute sudo subscription-manager repos --list-enabled to see all actually enabled subscriptions.
Execute sudo subscription-manager repos --list to see all subscriptions that are available for you.
Execute sudo subscription-manager repos --enable <repo> if you want to add additional repos.
7. anaconda issue
anaconda build rhel7 custom image Issue:
# dracut module 'anaconda' cannot be found or installed
how to solve?
8. kismatic reset
via:
./kismatic reset
9. kubernetes pkgs
Install via:
# vim /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
10. samba in ArchLinux
# pacman -S samba
# wget https://git.samba.org/samba.git/?p=samba.git;a=blob_plain;f=examples/smb.conf.default;hb=HEAD
# cp git..xxx /etc/samba/smb.conf
# vim /etc/samba/smb.conf
log file = /var/log/samba/%m.log
[myshare]
comment = Mary's and Fred's stuff
path = /var1/Nov14
valid users = dash
public = no
writable = yes
printable = no
create mask = 0765
# systemctl enable smb
# systemctl enable nmb
# systemctl start smb
# systemctl start nmb
11. tar with pigz
With pigz compression:
tar cf - paths-to-archive | pigz -9 -p 32 > archive.tar.gz
12. tips for centos
- install from iso
- sed the ip address.(isomaster)
- pigz package needed to be installed first. (isomaster)
13. tmpfs for debian
via :
# vim /etc/fstab
.....
tmpfs /tmp tmpfs nodev,nosuid,size=8G 0 0
14. kong ingress configuration
Rewrite ingress rulers:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: anagram.api
annotations:
ingress.kubernetes.io/rewrite-target: "/"
spec:
rules:
- host: anagram.api
http:
paths:
- path: /external
backend:
serviceName: anagram-svc
servicePort: 80
---
apiVersion: configuration.konghq.com/v1
kind: KongIngress
metadata:
name: anagram.api
proxy:
path: /
route:
strip_path: true
15. Auto Restart pdnsd
The script for start pdnsd:
# cat /bin/pdnsd.sh
touch /tmp/aaa.txt
if [[ $(ps -ef | grep -v grep | grep pdnsd) ]]; then
echo "pdnsd alive">/tmp/aaa.txt
else
echo "not alive">/tmp/aaa.txt
systemctl start pdnsd
fi
Add this script into crontab:
# crontab -e
@reboot sleep 60 && /bin/pdnsd.sh
16. python simple http server
python 3 syntax:
python -m http.server 8000
17. cnpm install error
As normal user, you didn’t have the priviledge for making soft link for cnpm.
As rooot user, do following:
$ sudo npm cache clean --force
$ sudo npm install -g cnpm --registry=https://registry.npm.taobao.org
$ which cnpm
/usr/bin/cnpm
18. dnscrypt
start via, better enable it:
sudo systemctl start dnscrypt-proxy.service
19. Ubuntu 18.04 vnc
Via following steps:
install these packages
# apt-get install gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal
and use this xstartup file
#!/bin/sh
export XKL_XMODMAP_DISABLE=1
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
gnome-panel &
gnome-settings-daemon &
metacity &
nautilus &
gnome-terminal &
But you will add some tips:
$ vim /usr/bin/gnome-panel-delay
!/bin/sh
sleep 4 && gnome-panel
Replace gnome-panel
with gnome-panel-delay
.
20. uefi for archlinux qemu
Install via:
$ sudo pacman -S ovmf
$ sudo vim /etc/libvirt/qemu.conf
user="root"
group="root"
nvram = [
"/usr/share/ovmf/x64/OVMF_CODE.fd:/usr/share/ovmf/x64/OVMF_VARS.fd"
]
$ sudo systemctl restart libvirtd
21. unlock proxmox
via following command:
# qm unlock vm_id
22. Back to Work
Edit /etc/systemd/network/MyBridge.network
, change the ip address, then
restart the networkd service via:
# systemclt restart systemd-networkd.service
Then your briged br0 will turn back to the ip address you just changed.
23. Debian upgrade kernel
Via following commands:
# echo "deb http://ftp.debian.org/debian stretch-backports main" | tee -a /etc/apt/sources.list > /dev/null
# apt-get update
# apt-cache search linux-image
# apt-get -t stretch-backports install linux-image-4.11.0-0.bpo.1-amd64
24. samba issue
From samba 4.8, the smbd, changed to smb, nmbd changed to nmb, so systemctl will changd to smb/nmb
25. unzip iconv
Chinese unzip:
$ unzip-iconv
$ unzip -O cp936 xxxx.zip
thus you will get the chinese coded file extracted.
26. Quickly Setup NodeJS Dev
In Conoha:
# docker run -it -p 5000:5000 ubuntu:latest /bin/bash
# apt-get update
# apt-get -y install vim
Change archive.ubuntu.com to jp.archive.ubuntu.com
# apt-get update
# apt-get install -y nodejs npm
# cd ~
# mkdir Code
# cd Code
# mkdir node
# npm config set prefix=$HOME/node
# export PATH=$HOME/node/bin:$PATH
# npm install -g express
# npm install -g express-generator
# which express
# exporess defcon
# cd defcon/
# npm install -d
# npm install socket.io express
# npm install -d
You should follow
https://github.com/robdodson/defcon
Install with ejs template enabled:
# express -v ejs dash
27. registry setting(insecure)
Xenial , via:
Edit /etc/docker/daemon.json and update the key "insecure-registries".
e.g.
{
"insecure-registries" : ["10.84.34.155:5000"]
}
28. paccache Saveing
Take care the directory size:
# pacman du -hs pkg
31G pkg
# pacman du -hs pkg
9.4G pkg
# pacman du -hs pkg
4.1G pkg
By following command you could saving the disk space(keep 3 or keep 1):
# sudo paccache -r -k 3
# sudo paccache -r -k 1
29. kvm/vmware issue
kvm will be black-listed via vmware, solved via:
# cat /etc/modprobe.d/vmware.conf
blacklist kvm
blacklist kvm-amd # For AMD CPUs
blacklist kvm-intel # For Intel CPUs
Uninstall vmware via:
# vmware-installer -l
Product Name Product Version
==================== ====================
vmware-workstation 12.0.0.2985596
# vmware-installer -u vmware-workstation --required
Remove the service:
# rm /etc/systemd/system/vmware.service
# rm /etc/systemd/system/vmware-usbarbitrator.service
30. ansible for installing nfs-client
Install methods:
# apt-get install nfs-common
# vim local.ini
# ansible-playbook -i local.ini nfsclient.yaml --extra-vars "@roles/nfs-client/defaults/all.yaml"
31. chartmuseum
Delete and upload again:
# curl -X DELETE portus.teligen.com:8988/api/charts/gitlab-runner/0.1.31
# curl --data-binary "@gitlab-runner-0.1.31.tgz" http://portus.teligen.com:8988/api/charts
32. docker volume rm
Via following command:
# docker volume ls | sed -n '1!p' |awk {'print $2'} | xargs -I % docker volume rm %
33. Generate crt/key in one line
Via following command:
# openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com" -keyout www.example.com.key -out www.example.com.cert
34. Ubuntu Server GUI
Install tasksel via:
# apt-get install -y tasksel
# tasksel --list
Install Ubuntu mate core via:
# tasksel install ubuntu-mate-core
# service lightdm start
Or Ubuntu/xubuntu-core/Lubuntu-core, etc, you could choose from the tasksel list.
35. vncserver
For ArchLinux:
export XKL_XMODMAP_DISABLE=1
#exec startxfce4
exec startlxde
36. Internet Sharing
For ArchLinux, 2 cards, enp0s29u1u2u7 is the card for connecting the internet, while the enp0s29u1u2u6 is the card for intranet. :
➜ ~ sudo iptables -t nat -A POSTROUTING -o enp0s29u1u2u7 -j MASQUERADE
➜ ~ sudo iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
➜ ~ sudo iptables -A FORWARD -i enp0s29u1u2u6 -o enp0s29u1u2u7 -j ACCEPT
37. time-sync in archlinux
ArchLinux ntp date.
# vim /etc/systemd/timesyncd.conf
[Time]
NTP=0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org
FallbackNTP=0.pool.ntp.org 1.pool.ntp.org 0.fr.pool.ntp.org0.arch.pool.ntp.org 1.arch.pool.ntp.org 2.arch.pool.ntp.org 3.arch.pool.ntp.org
# sudo systemctl enable systemd-timesyncd
# timedatectl show-timesync --all
38. Combine pdf
The filename contains Chinese, so I have to do like following:
$ ls -tr *.pdf | awk -v q="'" {'print q$0q'}>list.txt
Then edit the list.txt
Then your generated Combine.
$ pdfunite in-1.pdf in-2.pdf in-n.pdf out.pdf
Your generated out.pdf contains all of the pdfs.
39. crontab and notify-send
Create /bin/touchXdbus.sh
for getting the DBUS Session bus address:
#!/bin/sh
touch $HOME/.dbus/Xdbus
chmod 600 $HOME/.dbus/Xdbus
env | grep DBUS_SESSION_BUS_ADDRESS > $HOME/.dbus/Xdbus
echo 'export DBUS_SESSION_BUS_ADDRESS' >> $HOME/.dbus/Xdbus
On Awesome startup, use run_once
function for calling it:
$ vim ~/.config/awesome/rc.lua
run_once("/bin/touchXdbus.sh")
Now in your crontab task you have to write like following:
$ crontab -l
10 9-18 * * * /bin/notify.sh
$ cat /bin/notify.sh
#!/bin/sh
+ if [ -r "$HOME/.dbus/Xdbus" ]; then
+ . "$HOME/.dbus/Xdbus"
+ fi
current_time=`date`
filename="/home/dash/tasks.txt"
filecontent=`cat $filename`
#### Until you click it, you won't get this window vanish #####
notify-send -u critical -t 0 "$current_time, Stand UP, Boy" "$filecontent"
Now your notify-send will run properly.
40. unxz
Use unxz for uncompress xz compressed file.
41. ansible execute time
Add following configurations to ansible.cfg:
callback_whitelist = profile_tasks, timer
42. echo server
Run python echo server under kubernetes via:
# kubectl run myecho --image=echoserverpy:latest --replicas=3
# kubectl expose deployment myecho --port=31113
Edit for exposing UDP 31113 Port:
Add NodePort definition:
43. reconfigure keyboard
reconfigure keyboard on ubuntu is :
# sudo dpkg-reconfigure keyboard-configuration
44. raid issue
Deletes:
#/opt/MegaRAID/MegaCli/MegaCli64 -CfgLdDel -L1 -a0
List:
MegaCli -LDInfo -LALL -aAll 【显示所有逻辑磁盘组信息】
MegaCli -PDList -aAll 【显示所有的物理信息】
45. vagrant-libvirt
Install via:
# yaourt vagrant-libvirt
# vagrant plugin install /opt/vagrant/embedded/gems/cache/vagrant-libvirt-0.0.45.gem
# vagrant plugin install vagrant-mutate
# vagrant plugin list
vagrant-libvirt (0.0.45, global)
- Version Constraint: 0.0.45
vagrant-mutate (1.2.0, global)
After upgrading, do following:
# vagrant plugin install /opt/vagrant/embedded/gems/cache/vagrant-libvirt-0.0.45.gem
# vagrant plugin install vagrant-mutate
# yaourt vagrant-libvirt
Then all of your plugins will work properly.
46. apt auto update disable
disable via:
systemctl stop apt-daily.timer
systemctl disable apt-daily.timer
systemctl disable apt-daily.service
systemctl stop apt-daily-upgrade.timer
systemctl disable apt-daily-upgrade.timer
systemctl disable apt-daily-upgrade.service
Or
systemctl disable --now apt-daily{,-upgrade}.{timer,service}
47. openssl inspect lifetime of crt
Via following commands:
openssl x509 -in server.crt -noout -dates
48. Vagrant issue
Vagrant-libvirt, sometimes you have to manually build the ruby-libvirt plugin, and copy the correspoding so file into the /opt/vagrant
49. wrapped lines in vim
via following commands:
First set your vim so that it understands that you want 80 characters:
:set tw=80
then, hilight the line:
V
and make vim reformat it:
gq
shareedit
51. format several disk
Using following command:
set -e
set -x
for i in b c d e f g h i j k l; do
sudo fdisk -u /dev/vd${i}<<EOF
n
p
1
w
EOF
done
This command will format several disks, as you like.
52. Auto Change password
Change password via following commands:
$ openssl passwd -1 -salt 5RPVAd clear-text-passwd43
$1$5RPVAd$vgsoSANybLDepv2ETcUH7.
Then, copy the encrypted string to usermod. Make sure to wrap it with single quote.
$ usermod -p '$1$5RPVAd$vgsoSANybLDepv2ETcUH7.' root
Check it out in shadow file.
$ grep root /etc/shadow
53. rsync sync repo
syncing the ceph repository via following command:
# rsync -av --exclude "ceph-debuginfo" rsync://mirrors.ustc.edu.cn/ceph/rpm-luminous/el7/ `pwd`
# rsync -av --exclude "ceph-debuginfo" rsync://rsync.mirrors.ustc.edu.cn/ceph/rpm-luminous/el7/ ./
54. pool-start
Via following command you could view and start the virsh pool:
$ sudo virsh pool-list --all
$ sudo virsh pool-start vagrantpool
55. minikube start specify cpu/mem/disk
via following method:
# minikube start --cpus 4 --memory 8192 --disk-size 60g
56. Combine lines under linux
Via tr command you could combine several lines into one line:
# some output | tr '\n' ','
Replace the comma with some other characters.
57. prometheus for k8s
URL:
from https://github.com/coreos/prometheus-operator/tree/master/contrib/kube-prometheus
58. virtualbox tips
Debian’s virtualbox, 5.2 conflicts with kernel 4.17.0-9.bpo.1-amd64
59. libvirt’s bus issue
Changes to virtio bus:
lv.storage :file, :device => "hd#{driverletters[d]}", :path => "glusterdisk-#{i}-#{d}-#{DISK_UUID}.disk", :size => $kube_node_instances_with_disks_size, :bus => "virtio"
60. Minimum glusterfs nodes
Comment the replcas items. and set the volume type to None:
volumetype: "none"
# volumetype: "replicate:{{ hostvars[groups['glusterfs'][0]].replicate }}"
Or using heketi for creating the volume:
heketi-cli volume create -size=100 -durabilty=none
61. history without number
history without number using cut.
history | cut -c 8-
62. tr replace newline
Via following commands:
# tr '\r\n' ' '
63. two file difference
via grep command you could do this:
# git -v -f before.txt after.txt
64. vimdiff tips
vimdiff tips.
do (diff obtain) and dp (diff put) is what you need. Here is a small list of other helpful normal mode commands in this context.
]c - advance to the next block with differences
[c - reverse search for the previous block with differences
do (diff obtain) - bring changes from the other file to the current file
dp (diff put) - send changes from the current file to the other file
zo - unfold/unhide text
zc - refold/rehide text
zr - unfold both files completely
zm - fold both files completely
65. pactree
Using pactree for viewing the dependencies:
# sudo pacman -S pacman-contri
# pactree xxxx
Using -d(1~n) could viewing the depth of the dependencies.
66. wifi list
unblock the wifi via following commands:
$rfkill list all
0: hp-wifi: Wireless LAN
Soft blocked: yes
Hard blocked: no
1: phy0: Wireless LAN
Soft blocked: yes
Hard blocked: yes
$sudo rfkill unblock all
67. sed disable swap
edit /etc/fstab via:
# sudo sed -i '/ swap / s/^/#/' /etc/fstab
68. python split
For using them in ambari-k8s, do following:
>>> long='nodes-1:10.222.129.101;nodes-2:10.222.129.102;nodes-3:10.222.129.103'
>>> map={}
>>> key=[]
>>> for i in long.split(";"):
... key.append(i.split(":")[0])
... map[i.split(":")[0]]=i.split(":")[1]
...
>>> for i in key:
... print(i)
...
nodes-1
nodes-2
nodes-3
>>> for i in key:
... print(i)
... print(map[i])
...
nodes-1
10.222.129.101
nodes-2
10.222.129.102
nodes-3
10.222.129.103
69. proxmox Configuration
For AI project, do following:
# vim /etc/network/interfaces
auto lo
iface lo inet loopback
auto eno1
#real IP address
iface eno1 inet static
address 198.51.100.5
netmask 255.255.255.0
gateway 198.51.100.1
auto vmbr0
#private sub network
iface vmbr0 inet static
address 10.10.10.1
netmask 255.255.255.0
bridge_ports none
bridge_stp off
bridge_fd 0
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -s '10.10.10.0/24' -o eno1 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '10.10.10.0/24' -o eno1 -j MASQUERADE
ZFS enabled when in installation.
70. proxmox inner network
Connecting inner network via:
post-up iptables -t nat -A POSTROUTING -s 10.10.10.0/24 -o enp2s0f0 -j SNAT
--to-source 192.192.18.44
In every nodes:
$ route add -net 10.10.10.0/24 gw 192.192.189.44
71. vagrant-libvirt
Remove the vagrant-libvirt package installed via yaourt, then install plugin via:
# vagrant plugin install vagrant-libvirt
You won’t have the build issue.
72. beyond compare Linux
Reuse it after 30 day’s trial:
bcompare在ubuntu的配置文件的路径是:
/home/xxx/.config/bcompare
在该路径下找到 registry.dat删除即可
rm registry.dat
73. forwarding in Win
Use following command for setting up tunnel under windows:
netsh interface portproxy add v4tov4 listenport=4422 listenaddress=192.168.1.111 connectport=80 connectaddress=192.168.0.33
To remove forwarding:
netsh interface portproxy delete v4tov4 listenport=4422 listenaddress=192.168.1.111