Skip to content

Instantly share code, notes, and snippets.

@ouyi
ouyi / java_thread_dump.sh
Created January 27, 2018 08:51
Thread dump in Java
top # list processes, shift+p to sort processes by CPU usage
top -H -p <pid> # list threads, shift+p to sort threads by CPU usages
printf "%x\n" <tid> # convert tid to hexadecimal, called nid
jstack -l <pid> | grep -i <nid> -A 15 # get stack trace of the thread
@ouyi
ouyi / docker_child_images.sh
Created February 15, 2018 07:33
Find docker child images
image_id="$1"
for i in $(docker images -q); do
docker history $i | grep -q "$image_id" && echo $i;
done | sort -u
@ouyi
ouyi / intellij_mac_german_keyboard_shotcuts.txt
Last active March 11, 2018 15:42
Intellij MacOS German keyboard shortcuts
go to file begin/end:
fn + cmd + <-/->
file structure popup:
fn + cmd + F12
search everywhere:
shift shift
search for classes:
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import java.util.List;
public class PrintJvmOptions {
public static void main(String[] args) {
RuntimeMXBean runtimeMxBean = ManagementFactory.getRuntimeMXBean();
List<String> options = runtimeMxBean.getInputArguments();
for(String o : options) {
System.out.println(o);
@ouyi
ouyi / jdk_keystore.sh
Created April 11, 2018 16:20
Commands for working with Java keystore
$ sudo keytool -storepass changeit -import -file /tmp/root.crt -noprompt -alias my-trusted-ca -keystore /Library/Java//JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home/jre/lib/security/cacerts
Password:
Certificate was added to keystore
// changeit is the Java default keystore password
$ keytool -storepass changeit -list -keystore /Library/Java//JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home/jre/lib/security/cacerts | grep my-trusted-ca
my-trusted-ca, Apr 11, 2018, trustedCertEntry,
@ouyi
ouyi / s2s_copy.sh
Last active July 18, 2018 15:52
Server-to-server file copying
#/usr/bin/env bash
set -euo pipefail
src_host="$1"
src_path="$2"
dst_host="$3"
dst_path="$4"
pattern="${5:-*}"
@ouyi
ouyi / setup_openvpn.sh
Last active October 16, 2021 15:28
Setting up OpenVPN with Docker in a public cloud
# Install docker
yum check-update
curl -fsSL https://get.docker.com/ | sh
systemctl start docker
systemctl status docker
systemctl enable docker
systemctl status docker
# Set up the server-side of things
@ouyi
ouyi / daterange.py
Last active October 4, 2018 18:33
A command-line tool to work with dates
#/usr/bin/env python
import sys, argparse, pytz
from datetime import datetime, timedelta
DEFAULT_DATETIME_FORMAT = '%Y%m%d'
SECONDS_IN_A_DAY = 3600 * 24
def main():
parser = argparse.ArgumentParser(description='A command-line tool to work with dates')
@ouyi
ouyi / jinja2_file_less.py
Created September 7, 2018 08:20 — forked from wrunk/jinja2_file_less.py
python jinja2 examples
#!/usr/bin/env/python
#
# More of a reference of using jinaj2 without actual template files.
# This is great for a simple output transformation to standard out.
#
# Of course you will need to "sudo pip install jinja2" first!
#
# I like to refer to the following to remember how to use jinja2 :)
# http://jinja.pocoo.org/docs/templates/
#
@ouyi
ouyi / bash_parameter_expansion.txt
Last active October 20, 2018 20:56
Bash parameter expansion
## Indirect expansion
# aax="x"
# aay="y"
# var_name="aax"
# echo ${!var_name}
x
# var_name="aay"